किसी भी बाइनरी फ्लोटिंग पॉइंट को दशमलव में बिल्कुल स्वरूपित किया जा सकता है। परिणामस्वरूप स्ट्रिंग कुछ लंबा हो सकता है, लेकिन यह संभव है। में चल बिन्दु पर मेरे लेख मैं परिशुद्धता के महत्व को कवर किया, और अब मैं इस समारोह चाहते हैं। यह चुनौती एक प्रोग्राम या फ़ंक्शन लिखने के लिए है, जो इनपुट के रूप में एक अस्थायी बिंदु मान लेता है और आउटपुट के रूप में सटीक दशमलव स्ट्रिंग को प्रारूपित करता है।
यह सुनिश्चित करने के लिए कि हम सही फ्लोटिंग पॉइंट नंबरों के साथ काम कर रहे हैं, प्रोग्राम के इनपुट के रूप में एक सटीक प्रारूप प्रदान किया जाना चाहिए। यह प्रारूप दो पूर्णांकों का होगा Significand Exponent
, जहां वास्तविक फ्लोटिंग पॉइंट वैल्यू है Significand * 2 ^ Exponent
। ध्यान दें कि या तो मान ऋणात्मक हो सकता है।
सुनिश्चित वर्णन:
- कम से कम 32-बिट फ़्लोट की सीमा और सटीकता का समर्थन किया जाना चाहिए (कोई इनपुट इससे आगे नहीं जाएगा)
- दशमलव स्वरूपित मान एक सटीक प्रतिनिधित्व होना चाहिए (बस एक सही दौर की गारंटी देने के लिए पर्याप्त है कि फ्लोट करने के लिए वापस सही पर्याप्त नहीं है)
- हम मानक पुस्तकालय फ़्लोटिंग पॉइंट फ़ॉरमेटिंग फ़ंक्शंस पर भरोसा नहीं करते हैं और न ही पर्याप्त रूप से तेज़ (पूर्व:)
printf
, और इस प्रकार उनका उपयोग नहीं किया जा सकता है। आपको स्वरूपण करना होगा। इंटीग्रल स्वरूपण / रूपांतरण कार्यों की अनुमति है। .
यदि कोई पूर्ण संख्या घटक नहीं है , तो आवश्यक एक अग्रणी शून्य के अलावा कोई अग्रणी या अनुगामी शून्य नहीं हो सकता है- एक समारोह, या पूरे कार्यक्रम की अनुमति है।
उदाहरण:
1 -2 => 0.25
17 -3 => 2.125
-123 11 => -251904
17 50 => 19140298416324608
23 -13 => 0.0028076171875
3 120 => 3987683987354747618711421180841033728
3 -50 => 0.00000000000000266453525910037569701671600341796875
-3 -50 => -0.00000000000000266453525910037569701671600341796875
10 -2 => 2.5
-12345 -3 => -1543.125
0 0 => 0
161 -4 => 10.0625
512 -3 => 64
सबसे छोटा कोड जीतता है।
.0
?
0.abc
एक अग्रणी शून्य नहीं है, तो abc.0
एक अनुगामी नहीं है।
.0
फ़्लोटिंग पॉइंट नंबरों के साथ काम करते समय यह हमेशा पूरे नंबरों के साथ समाप्त होता है । उदाहरण के लिए देखें पायथन: str(1.0) == '1.0'
बनाम str(1) == '1'
। आपका तर्क अभी भी असंगत है।