साल 2525 है और आप अभी-अभी सौरमंडल के सारे ग्रहों की यात्रा पर निकले हैं (बुध, शुक्र, पृथ्वी, मंगल, बृहस्पति, शनि, अरुण और वरुण)।
पहला पड़ाव बुध है, जहाँ सीमा शुल्क विभाग आपसे एक फॉर्म भरवाता है (नौकरशाही साफ़ तौर पर सिर्फ़ पृथ्वी पर नहीं है)।
जब आप यह फॉर्म सीमा शुल्क अधिकारी को सौंपते हैं, तो वे उसे गौर से देखते हैं और भौंहें सिकोड़ लेते हैं।
"क्या आप सच में चाहते हैं कि मैं यह मान लूँ कि आपकी उम्र सिर्फ़ 50 साल है? आपकी उम्र तो 200 साल के आसपास होनी चाहिए!"
आपको यह सुनकर हँसी आती है और आप इंतज़ार करते हैं कि अधिकारी भी हँसेंगे, लेकिन वे एकदम गंभीर दिखते हैं।
तब आपको समझ आता है कि आपने अपनी उम्र पृथ्वी के सालों में भरी है, जबकि अधिकारी को उसकी उम्मीद बुध के सालों में थी!
सूरज के चारों ओर बुध की परिक्रमा की अवधि पृथ्वी की तुलना में बहुत कम है, इसलिए बुध के सालों में आपकी उम्र वास्तव में कहीं ज़्यादा होती है।
कुछ फुर्तीले हिसाब लगाने के बाद आप अपनी उम्र बुध के सालों में बता पाते हैं।
सीमा शुल्क अधिकारी संतुष्ट होकर मुस्कुराते हैं और आपको आगे जाने का इशारा करते हैं।
आप मन ही मन तय करते हैं कि आगे सीमा शुल्क की जाँच से पहले ही हर ग्रह के हिसाब से अपनी उम्र निकाल लेंगे, ताकि ऐसी गड़बड़ दोबारा न हो।
अगर आप सोच रहे हैं कि प्लूटो को इस सूची में जगह क्यों नहीं मिली, तो यह YouTube वीडियो देखिए।
मान लीजिए आपको सेकंड में किसी की आयु दी गई है। अब गणना कीजिए कि हमारे सौरमंडल के किसी ग्रह पर वह व्यक्ति कितने साल का होगा।
पृथ्वी का एक वर्ष 365.25 पृथ्वी दिनों के बराबर होता है, यानी 31,557,600 सेकंड। अगर आपसे कहा जाए कि किसी की आयु 1,000,000,000 सेकंड है, तो उसकी आयु 31.69 पृथ्वी वर्ष होगी।
बाकी ग्रहों के लिए आपको उनका पृथ्वी वर्षों में परिक्रमण काल ध्यान में रखना होगा:
| ग्रह | पृथ्वी वर्षों में परिक्रमण काल |
|---|---|
| बुध | 0.2408467 |
| शुक्र | 0.61519726 |
| पृथ्वी | 1.0 |
| मंगल | 1.8808158 |
| बृहस्पति | 11.862615 |
| शनि | 29.447498 |
| अरुण | 84.016846 |
| वरुण | 164.79132 |
सूरज के चारों ओर पृथ्वी का एक पूरा चक्कर असल में 365.256 दिन (1 नाक्षत्र वर्ष) के ज़्यादा करीब होता है। ग्रेगोरियन कैलेंडर में औसतन 365.2425 दिन होते हैं। हालाँकि यह पूरी तरह सटीक नहीं है, फिर भी इस अभ्यास में 365.25 वैल्यू ही इस्तेमाल की जाती है। एक वर्ष मापने के और भी तरीके जानने के लिए विकिपीडिया पर वर्ष देखिए।
Cairo में फ्लोटिंग-पॉइंट संख्याओं के लिए कोई अपना समर्थन नहीं है। इसलिए हम भिन्नात्मक वैल्यू को पूर्णांकों के रूप में व्यक्त करते हैं।
ब्लॉकचेन के विकास में गणनाओं की परिशुद्धता बनाए रखने के लिए यह तरीका बहुत ज़रूरी है।
इस अभ्यास में हम कक्षीय अवधियों को माइक्रोसेकंड में बदलकर फिक्स्ड-पॉइंट अंकगणित का उपयोग करते हैं।
उदाहरण के लिए, बुध की कक्षीय अवधि 0.2408467 पृथ्वी वर्ष है। इसे 1,000,000 से गुणा करने पर यह 240,846,700 माइक्रोसेकंड बन जाती है।
दशमलव परिशुद्धता का ध्यान रखने के लिए टेस्ट केस यह मानकर चलते हैं कि निकलने वाली आयु में दो दशमलव स्थान होंगे, जिन्हें पूर्णांकों के रूप में लिखा जाता है।
इसका मतलब है कि 31.69 वर्ष की आयु कोड में 3169 के रूप में संग्रहीत की जाती है।
ऐसा करने के लिए हम भाग देने से पहले 100 से गुणा करते हैं।
यहाँ एक उदाहरण है:
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
इस तरीके से आप भिन्नात्मक वैल्यू को पूर्णांकों के रूप में सही-सही व्यक्त कर पाते हैं और साथ ही दो दशमलव स्थानों की ज़रूरी परिशुद्धता भी बनाए रखते हैं। टेस्ट पास होने के लिए यह परिशुद्धता बहुत ज़रूरी है।
Exercism पर साइन अप कीजिए और Cairo को 25 कॉन्सेप्ट68 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।