फ़्लोटिंग पॉइंट नंबर अधिकांश दशमलव संख्याओं का सही प्रतिनिधित्व नहीं कर सकते हैं, इसलिए जब आप एक फ़्लोटिंग पॉइंट शाब्दिक टाइप करते हैं तो आपको वास्तव में उस शाब्दिक का एक अनुमान मिलता है। आपके द्वारा लिखी गई संख्या से अनुमान बड़ा या छोटा हो सकता है।
आप इसे तैरते हुए दशमलव संख्या के सटीक मान को दशमलव या अंश में देख सकते हैं।
>>> from decimal import Decimal
>>> Decimal(0.01)
Decimal('0.01000000000000000020816681711721685132943093776702880859375')
>>> from fractions import Fractio
>>> Fraction(0.01)
Fraction(5764607523034235, 576460752303423488)
हम अपने अयोग्य शाब्दिक के कारण त्रुटि को खोजने के लिए Fraction type का उपयोग कर सकते हैं।
>>> float((Fraction(1)/Fraction(0.01)) - 100)
-2.0816681711721685e-15
हम यह भी पता लगा सकते हैं कि 100 के आसपास दानेदार डबल सटीक फ़्लोटिंग पॉइंट संख्याएं अगली बार सुन्न से उपयोग करके कैसे होती हैं।
>>> from numpy import nextafter
>>> nextafter(100,0)-100
-1.4210854715202004e-14
इससे हम यह अनुमान लगा सकते हैं कि निकटतम फ्लोटिंग पॉइंट संख्या 1/0.01000000000000000020816681711721685132943093776702880859375वास्तव में 100 है।
के बीच का अंतर 1//0.01और int(1/0.01)गोलाई है। 1 // 0.01 एक ही चरण में अगले पूरी संख्या के लिए सटीक परिणाम नीचे राउंड करता है। तो हमें 99 का परिणाम मिलता है।
int (1 / 0.01) दूसरी ओर दो चरणों में गोल होता है, पहले यह परिणाम को निकटतम दोहरी परिशुद्धता फ्लोटिंग पॉइंट संख्या (जो कि ठीक 100 है) पर राउंड करता है, फिर यह राउंडिंग पॉइंट नंबर को अगले पूर्णांक (जो है) पर राउंड करता है फिर से ठीक 100)।