2012-03-28 15 views
18

में अंकों की संख्या क्या फ़्लोटिंग-पॉइंट नंबर के एक्सपोनेंट को प्रिंट करने के लिए उपयोग किए जाने वाले अंकों की संख्या सेट करना संभव है? मैं 3.पायथन - एक्सपोनेंट

वर्तमान में करने के लिए यह निर्धारित करना चाहते हैं,

f = 0.0000870927939438012 
>>> "%.14e"%f 
'8.70927939438012e-05' 
>>> "%0.14e"%f 
'8.709279e-005' 

क्या मैं प्रिंट करना चाहते है: '8.70927939438012e-005'

+2

कैसे आ दूसरे उदाहरण कम सटीक और प्रतिपादक में 3 अंक? –

+0

मेरी मशीन "% e"% f आउटपुट '8.709279e-05' और "% 0.14e"% f आउटपुट '8.70927939438012e-05' पर। इसके अलावा, एमपीपीएथ जैसे पुस्तकालयों के साथ उच्च परिशुद्धता संभव होनी चाहिए। हालांकि, मुझे नहीं पता कि यह आपकी आवश्यकताओं के अनुरूप है या नहीं। – aruseni

उत्तर

17

एक है कि नियंत्रित करने के लिए कोई तरीका नहीं है, सबसे अच्छा तरीका है एक समारोह में लिखने के लिए है इस तरह के लिए

def eformat(f, prec, exp_digits): 
    s = "%.*e"%(prec, f) 
    mantissa, exp = s.split('e') 
    # add 1 to digits as 1 is taken by sign +/- 
    return "%se%+0*d"%(mantissa, exp_digits+1, int(exp)) 

print eformat(0.0000870927939438012, 14, 3) 
print eformat(1.0000870927939438012e5, 14, 3) 
print eformat(1.1e123, 4, 4) 
print eformat(1.1e-123, 4, 4) 

आउटपुट:

8.70927939438012e-005 
1.00008709279394e+005 
1.1000e
1.1000e-
+2

अनुराग, एक स्ट्रिंग के रूप में इसे कुशल बनाने और एक्सपोनेंट में तीन अंक प्राप्त करने के कई तरीके हैं। मुझे जो दिलचस्पी थी वह स्ट्रिंग मैनिपुलेशन से बचने के लिए है क्योंकि मेरे पोस्ट में दूसरे उदाहरण से पता चलता है कि पायथन मूल रूप से कुछ मामलों में तीन अंकों का उपयोग करता है। अभी भी यह सुनिश्चित नहीं है कि ऐसा क्यों करता है, जैसा कि आपने ऊपर पूछा है। प्रयोग करते समय मैंने इसे पाया। – nmadzharov

+0

@nmadzharov मुझे नहीं लगता कि इसके लिए कोई सार्वजनिक कार्य है, आपको यह देखने के लिए कि यह वास्तव में क्या कर रहा है, पाइथन कोड को देखने का प्रयास करना चाहिए, हालांकि मुझे अजगर पर एक्सपोनेंट में 3 अंक नहीं दिखते हैं 2.7 –

+0

@Anurag: तीन- पाइथन 2.5 के लिए कुछ प्लेटफार्मों पर अंक एक्सपोनेंट दिखाई दिए; यह पायथन 2.6 (मुझे विश्वास है) में तय किया गया था। अधिक के लिए http://bugs.python.org/issue1600 देखें। –

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