हाल ही में, एक संवाददाता ने float.as_integer_ratio()
का उल्लेख किया, जो कि पायथन 2.6 में नया है, यह नोट करते हुए कि सामान्य फ़्लोटिंग पॉइंट कार्यान्वयन वास्तविक संख्याओं के अनिवार्य रूप से तर्कसंगत अनुमान हैं। ,float.as_integer_ratio की कार्यान्वयन सीमाएं()
>>> float.as_integer_ratio(math.pi);
(884279719003555L, 281474976710656L)
मैं हल्का अधिक accurate परिणाम कारण Arima को देखने के लिए नहीं हैरान था: intrigued, मैं कोशिश करने के लिए π था
(428224593349304L, 136308121570117L)
उदाहरण के लिए, इस कोड:
#! /usr/bin/env python
from decimal import *
getcontext().prec = 36
print "python: ",Decimal(884279719003555)/Decimal(281474976710656)
print "Arima: ",Decimal(428224593349304)/Decimal(136308121570117)
print "Wiki: 3.14159265358979323846264338327950288"
इस आउटपुट का उत्पादन करता है:
python: 3.14159265358979311599796346854418516 Arima: 3.14159265358979323846264338327569743 Wiki: 3.14159265358979323846264338327950288
निश्चित रूप से, परिणाम 64-बिट फ्लोटिंग-पॉइंट नंबरों द्वारा प्रदान की जाने वाली सटीकता को सही है, लेकिन यह मुझे पूछने के लिए प्रेरित करता है: as_integer_ratio()
की कार्यान्वयन सीमाओं के बारे में मैं और कैसे जान सकता हूं? किसी भी मार्गदर्शन के लिए धन्यवाद।
अतिरिक्त लिंक: Stern-Brocot tree और Python source।
स्वीकृत उत्तर भ्रामक है। 'As_integer_ratio' विधि उस अंश के अंश और denominator को लौटाती है जिसका मूल्य _exactly_ फ़्लोटिंग-पॉइंट नंबर के मान से मेल खाता है। यदि आप एक अंश के रूप में अपने फ्लोट का पूर्ण सटीक प्रतिनिधित्व चाहते हैं, तो 'as_integer_ratio' का उपयोग करें। यदि आप छोटे denominator और numerator के साथ एक सरलीकृत _approximation_ चाहते हैं, तो 'fractions.Fraction.limit_denominator' में देखें। IOW, 'math.pi' π के अनुमान है। लेकिन '884279719003555/281474976710656' _not_' math.pi' का अनुमान है; यह _exactly_ इसके बराबर है। –
@ मार्क डिकिंसन: आपका बिंदु अच्छी तरह से लिया गया है; यह इस [संबंधित उत्तर] को स्पष्ट करता है (https://stackoverflow.com/a/2076903/230513)। हालांकि [स्वीकृत उत्तर] (https://stackoverflow.com/a/2076296/230513) कुछ रखरखाव का उपयोग कर सकता है, इससे मुझे यह देखने में मदद मिली कि मेरी सोच कहाँ से घबरा गई थी। – trashgod