2009-10-21 9 views
34

मैं पाइथन 3.0 format फ़ंक्शन का उपयोग करके दशमलव स्थानों की किसी विशेष संख्या में दशमलव कैसे घुमा सकता हूं?नए पायथन प्रारूप समारोह के साथ गोल करने वाले दशमलव

+2

बस Poste हो जाता है यह सवाल है क्योंकि मैंने दस्तावेज को समझने की कोशिश में 15 मिनट बर्बाद कर दिए हैं http://docs.python.org/3.1/library/string.html#formatspec।उन्हें वास्तव में इसे उदाहरण में शामिल करना चाहिए – Casebash

उत्तर

68

यहाँ एक ठेठ, उपयोगी उदाहरण है ...:

>>> n = 4 
>>> p = math.pi 
>>> '{0:.{1}f}'.format(p, n) 
'3.1416' 

नेस्टेड {1} दूसरा तर्क, एन के वर्तमान मूल्य लेता है, और के रूप में निर्दिष्ट (यहां यह लागू होता है, की "सटीक" भाग के लिए प्रारूप - दशमलव बिंदु के बाद अंकों की संख्या), और बाहरी परिणामस्वरूप {0:.4f} लागू होता है। बेशक, यदि आप चाहें तो 4 (या अंकों की संख्या) को हार्डकोड कर सकते हैं, लेकिन मुख्य बिंदु यह है कि आप पर नहीं हैं!

भी अच्छी बात ...:

>>> '{number:.{digits}f}'.format(number=p, digits=n) 
'3.1416' 

... बजाय इस तरह के 0 और इसके बाद के संस्करण 1 के रूप में संदिग्ध "तर्क संख्या" की, आप चमकदार-स्पष्ट तर्क नाम, और पास का उपयोग करने के लिए चुन सकते हैं संबंधित मान कीवर्ड (उर्फ "नाम") format पर तर्क - हो सकता है तो अधिक पढ़ने योग्य, जैसा कि आप देखते हैं !!! और सब बाहर छोड़ने

[[fill]align][sign][pad][width][,][.precision][type] 

तो, उदाहरण के लिए:

+0

मुझे लगता है कि मैंने पहले घोंसले की चाल के बारे में पढ़ा था। यह काफी साफ है, मुझे – Casebash

+2

@Casebash याद दिलाने के लिए धन्यवाद, आपका स्वागत है! मैं सहमत हूं कि 'प्रारूप' दृष्टिकोण पुरानी शैली, सी-प्रेरित '%' -ऑपरेटर आधारित स्वरूपण से काफी बेहतर है - उनकी शक्ति लगभग बराबर है, लेकिन 'प्रारूप' _vastly_ अधिक उपयोग योग्य है!) –

+0

उपयोग की तरह {0:। {1} f} के बजाय नामित तर्कों का, आप सही आईएमओ हैं * रास्ता * संख्या के रूप में अधिक पठनीय:। {अंक} एफ। एक और प्लस यह है कि नामित तर्कों को अधिक आसानी से पुनर्नवीनीकरण किया जा सकता है और जरूरी नहीं कि क्रम में होना आवश्यक है। –

3

करने के लिए n दशमलव स्थानों के लिए दौर एक्स का उपयोग करें:

"{0:.{1}f}".format(x,n) 

जहां 0 और 1 विधि str.format() के पहले और दूसरे तर्क के लिए स्टैंड, क्रमशः।

11

अजगर 3.xa प्रारूप स्ट्रिंग में प्रतिस्थापन क्षेत्रों इस प्रकार ब्रेसिज़ ::

".... {0: format_spec} ....".format(value) 

प्रारूप कल्पना सामान्य लेआउट है ने संकेत होता है लेकिन चौड़ाई, परिशुद्धता और प्रकार कोड, दशमलव या फ़्लोटिंग पॉइंट नंबर स्वरूपित किया जा सकता है:

>>>print("The value of pi is {0:10.7f} to 7 decimal places.".format(math.pi)) 

यह प्रिंट के रूप में होगा:

The value of pi is 3.1415927 to 7 decimal places. 
+0

सर्वोत्तम और सबसे जानकारीपूर्ण उत्तर – SARose

0

मैं सिर्फ पता चला कि यह दोनों {0} और {digits} अंकन गठबंधन करने के लिए संभव है। यह विशेष रूप से उपयोगी है जब आप 1 घोषणा साथ दशमलव का एक पूर्व निर्धारित संख्या के लिए सभी चर पूर्णांक बनाना चाहते हैं: [एलेक्स मार्टेली] के समाधान पर लेकिन का उपयोग कर पायथन 3.6.2 आधारित

sName = 'Nander' 
fFirstFloat = 1.12345 
fSecondFloat = 2.34567 
fThirdFloat = 34.5678 
dNumDecimals = 2 

print('{0} found the following floats: {1:.{digits}f}, {2:.{digits}f}, {3:.{digits}f}'.format(sName, fFirstFloat, fSecondFloat, fThirdFloat, digits=dNumDecimals)) 
# Nander found the following floats: 1.12, 2.35, 34.57 
1

एक अद्यतन जवाब और यह अपडेट हो जाता है प्रारूप वाक्य रचना मेरा सुझाव है:

>>> n=4 
>>> p=math.pi 
>>> f'{p:.{n}f}' 
'3.1416' 

लेकिन बुद्धिमानी से अपने कोड को अपने चर का चयन करके स्वयं का दस्तावेजीकरण

>>> precision = 4 
>>> pi = math.pi 
>>> f'{pi:.{precision}f}' 
'3.1416'