سال ۲۵۲۵ است و شما تازه سفرتان را به قصد دیدن همهی سیارههای منظومهی شمسی آغاز کردهاید (عطارد، زهره، زمین، مریخ، مشتری، زحل، اورانوس و نپتون). اولین ایستگاه عطارد است، جایی که گمرک از شما میخواهد فرمی پر کنید (ظاهراً بوروکراسی مخصوص زمین نیست). وقتی فرم را به مأمور گمرک تحویل میدهید، آن را با دقت برانداز میکند و اخم میکند. «آیا واقعاً انتظار دارید باور کنم که فقط ۵۰ سالتان است؟ باید نزدیک به ۲۰۰ سال داشته باشید!» با لبخند منتظر میمانید که مأمور گمرک شروع به خندیدن کند، اما او کاملاً جدی به نظر میرسد. متوجه میشوید که سنتان را بر حسب سالهای زمینی وارد کردهاید، اما مأمور آن را بر حسب سالهای عطاردی انتظار داشته است! چون مدت گردش عطارد به دور خورشید بهطور چشمگیری از زمین کوتاهتر است، در واقع به سالهای عطاردی خیلی مسنتر هستید. پس از چند محاسبهی سریع، میتوانید سنتان را بر حسب سالهای عطاردی اعلام کنید. مأمور گمرک راضی لبخند میزند و به شما اجازه میدهد رد شوید. در ذهنتان یادداشت میکنید که پیش از بازرسیهای گمرکی آینده، سن مخصوص هر سیارهتان را از پیش محاسبه کنید تا از چنین اشتباههایی جلوگیری شود.
اگر برایتان سؤال است که چرا پلوتو در این فهرست جا نگرفت، این ویدیوی یوتیوب را ببینید.
اگر سنی بر حسب ثانیه داده شود، حساب کنید که آن شخص در هر سیارهای از منظومهی شمسی ما چند ساله خواهد بود.
یک سال زمینی برابر است با ۳۶۵٫۲۵ روز زمینی، یا ۳۱٬۵۵۷٬۶۰۰ ثانیه. اگر به شما بگویند سن کسی ۱٬۰۰۰٬۰۰۰٬۰۰۰ ثانیه است، سن او ۳۱٫۶۹ سال زمینی خواهد بود.
برای سیارههای دیگر باید دورهی مداری آنها را بر حسب سال زمینی در نظر بگیرید:
| سیاره | دورهی مداری بر حسب سال زمینی |
|---|---|
| عطارد | 0.2408467 |
| زهره | 0.61519726 |
| زمین | 1.0 |
| مریخ | 1.8808158 |
| مشتری | 11.862615 |
| کیوان | 29.447498 |
| اورانوس | 84.016846 |
| نپتون | 164.79132 |
طول واقعی یک دور کامل گردش زمین به دور خورشید به ۳۶۵٫۲۵۶ روز (یک سال نجومی) نزدیکتر است. تقویم میلادی بهطور میانگین ۳۶۵٫۲۴۲۵ روز دارد. اگرچه این مقدار کاملاً دقیق نیست، در این تمرین از ۳۶۵٫۲۵ استفاده میشود. برای آشنایی با روشهای دیگر اندازهگیری سال، سال در ویکیپدیا را ببینید.
در Cairo، که پشتیبانی بومی برای اعداد ممیز شناور ندارد، مقادیر کسری را با اعداد صحیح نمایش میدهیم.
این رویکرد در توسعهی بلاکچین برای حفظ دقت در محاسبات ضروری است.
در این تمرین، با تبدیل دورههای مداری به میکروثانیه، از «حساب ممیز ثابت» استفاده میکنیم.
برای مثال، دورهی مداری عطارد که 0.2408467 سال زمینی است، با ضرب در 1,000,000 به 240,846,700 میکروثانیه تبدیل میشود.
برای در نظر گرفتن دقت اعشاری، موارد تست فرض میکنند که سن حاصل دو رقم اعشار دارد که با اعداد صحیح نمایش داده میشود.
یعنی سنی برابر با 31.69 سال در کد بهصورت 3169 ذخیره میشود.
برای رسیدن به این هدف، پیش از انجام تقسیم، در ۱۰۰ ضرب میکنیم.
در ادامه یک مثال میآید:
let mercury_orbital_period = 240_846_700; // in microseconds
let age_microseconds = age_seconds * 1_000_000;
// multiplying with 100 to retain 2 decimal places
age_microseconds * 100 / mercury_orbital_period
با استفاده از این روش، مطمئن میشوید که مقادیر کسری بهدرستی بهصورت اعداد صحیح نمایش داده میشوند و در همان حال دقت لازم دو رقم اعشار حفظ میشود، که برای قبولی تستها حیاتی است.