2017-01-09 5 views
10

मैंने स्कूल प्रोजेक्ट के लिए पीआई की गणना करने के लिए पाइथन 3 प्रोग्राम बनाया है, लेकिन यह हमेशा 16 दशमलव स्थानों पर बंद हो जाता है। क्या अजगर में संख्याओं की लंबाई की सीमा है? यदि ऐसा है तो क्या कोई ऐसी भाषा है जिसका मैं उपयोग कर सकता हूं जो मुझे जारी रखेगा?क्या अजगर में संख्या सीमाएं हैं?

accuracy = int(input("accuracy: ")) 

current = 2 
opperation = "+" 
number = 3 
count = 1 

for i in range (accuracy): 
    if opperation == "-": 
     number = number - (4/(current*(current+1)*(current+2))) 
     opperation = "+" 
    elif opperation == "+": 
     number = number + (4/(current*(current+1)*(current+2))) 
     opperation = "-" 
    current += 2 
    print(str(count).zfill(8)) + ": " + str(number) 
    count += 1 
+2

फ़्लोटिंग-पॉइंट अपर्याप्तता से बचने के लिए, लंबाई के प्रतिबंधों से बचने के लिए 'महत्वपूर्ण' मॉड्यूल का उपयोग करें और महत्वपूर्ण रूप से अपने मामले के लिए। –

+0

किसी दिए गए आकार के फ़्लोटिंग पॉइंट नंबर के साथ सटीकता की सीमा है। लेकिन पाइथन आपको और अंक दिखाएगा: 'गणित आयात पीआई से; प्रिंट (प्रारूप (पीआई, '.32 एफ')) '। – jonrsharpe

+0

यदि आप जानना चाहते हैं कि चश्मे आपके सिस्टम पर तैरने के लिए क्या हैं, 'आयात sys; प्रिंट (sys.float_info) ' –

उत्तर

9

यदि आप पूर्णांक और पायथन 3.x के साथ काम कर रहे हैं तो कोई प्रतिबंध नहीं है। फ़्लोटिंग पॉइंट नंबरों का उपयोग करके आपको प्राप्त सटीकता सीमित है। एक पायथन float (जैसे 3.14) वास्तव में एक सी double है, जिसमें सटीकता के लगभग 16 दशमलव हैं, जैसा कि आप कहते हैं।

आप decimal मॉड्यूल का उपयोग मनमाने ढंग से सटीक के साथ अन्य फ़्लोटिंग पॉइंट नंबरों के साथ बनाने और काम करने के लिए कर सकते हैं। उदाहरण कोड:

# Normal Python floats 
a = 0.000000000000000000001 
b = 1 + 2*a 
print(b) # Prints 1.0 

# Using Decimal 
import decimal 
decimal.getcontext().prec = 100 # Set the precision 
a = decimal.Decimal('0.000000000000000000001') 
b = 1 + 2*a 
print(b) # Prints 1.000000000000000000002 

decimal बारे में अधिक जानकारी के लिए the docs देखें।

+0

ध्यान दें कि दशमलव का उपयोग करके धीमे हो जाएंगे फ्लोटिंग-पॉइंट नंबरों में। – Richard

+2

@ रिचर्ड वास्तव में। यद्यपि पायथन 3.3 में, 'दशमलव' मॉड्यूल [sped up] था (https://docs.python.org/3/whatsnew/3.3.html#new-decimal) एक कारक ~ 100 द्वारा! पायथन के नए संस्करणों के लिए, यह समस्याग्रस्त रूप से धीमी नहीं होनी चाहिए। –

+0

मुझे लगता है कि दशमलव मॉड्यूल के दस्तावेज़ीकरण में, पीआई की गणना करने के लिए एक नुस्खा है – Copperfield

संबंधित मुद्दे