पाइथन में फ़्लोटिंग संख्या को निश्चित चौड़ाई में कैसे प्रारूपित करें


322

मैं निम्नलिखित आवश्यकताओं के साथ एक निश्चित संख्या में फ़्लोटिंग संख्या को कैसे प्रारूपित करूं:

  1. शून्य शून्य करना if N १
  2. तय चौड़ाई भरने के लिए अनुगामी दशमलव शून्य (s) जोड़ें
  3. दशमलव की अंकों को निर्धारित चौड़ाई से काटें
  4. सभी दशमलव बिंदुओं को संरेखित करें

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

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

आउटपुट जैसा होगा

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

जवाबों:


500
for x in numbers:
    print "{:10.4f}".format(x)

प्रिंट

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

घुंघराले ब्रेसिज़ के अंदर प्रारूप निर्दिष्ट पायथन प्रारूप स्ट्रिंग सिंटैक्स का अनुसरण करता है । विशेष रूप से, इस मामले में, इसमें निम्नलिखित भाग होते हैं:

  • रिक्त स्ट्रिंग पेट के साधन से पहले "के बगल में प्रदान की तर्क ले format()" - इस मामले में xकेवल तर्क के रूप में।
  • 10.4fबृहदान्त्र के बाद का हिस्सा प्रारूप विनिर्देश है
  • fअर्थ है फिक्स्ड बिन्दु अंकन।
  • 10क्षेत्र की कुल चौड़ाई की जा रही मुद्रित की रिक्ति द्वारा lefted-गद्देदार है।
  • 4दशमलव बिंदु के बाद अंकों की संख्या है।

12
तो मैं समझता हूं कि 4f दशमलव को सीमित करने के लिए 4 का प्रतिनिधित्व करता है (अनुगामी शून्य के साथ), लेकिन 10 का क्या अर्थ है? इसका मतलब है कि यह स्वरूपण 9999999999 (दस 9 के) से अधिक पूर्णांकों के साथ काम नहीं करेगा? बस उत्सुक।
hobbes3

55
10.410 वर्णों की चौड़ाई और 4 दशमलव स्थानों की सटीकता का अर्थ है।
MRAB

13
@ hobbes3: 10न्यूनतम फ़ील्ड की चौड़ाई है, यानी मुद्रित स्ट्रिंग की न्यूनतम लंबाई। नंबर डिफ़ॉल्ट रूप से सही-संरेखित होते हैं और रिक्त स्थान के साथ गद्देदार होते हैं - अधिक विवरण के लिए दस्तावेज़ीकरण देखें।
स्वेन मार्नाच

9
2.7 से पहले के पायथन के लिए:("%0.4f" % x).rjust(10)
स्टीवन रूंबल्स्की

22
@StevenRumbalski: या बस "%10.4f" % x। पायथन 2.6 में, आप भी उपयोग कर सकते हैं "{0:10.4f}".format(x)
स्वेन मार्नाच

88

इसका उत्तर दिए हुए कुछ साल हो गए हैं, लेकिन पाइथन 3.6 ( PEP498 ) के रूप में आप नए का उपयोग कर सकते हैं f-strings:

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

प्रिंटों:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

2
ध्यान दें कि चौड़ाई में डॉट वर्ण भी शामिल है। इसलिए यदि आप 9 को चौड़ाई बताते हैं, तो 1 का उपयोग डॉट को प्रिंट करने के लिए किया जाएगा, अन्य 8 अंकों और रिक्त स्थान को प्रिंट करने के लिए किया जाएगा।
off99555

37

Python3 में निम्नलिखित कार्य हैं:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4

यह पिछले 4 वर्षों में बदल गया है, अब %स्वरूपण स्वरूपण का सबसे पुराना तरीका है। कई कारणों से उपयोग str.formatया f-stringsपसंद की जाती है %। पहले जब यह केवल था str.format, लोगों के पास कुछ कारण थे लेकिन f-stringsउस छेद को ठीक कर दिया। प्रारूप मिनी-भाषा डॉक्स , डॉक्स से str.format उदाहरण और डॉक्स में f- स्ट्रिंग शाब्दिक उदाहरण
NinMonkey


6

आप शून्य के साथ पैड भी छोड़ सकते हैं। उदाहरण के लिए यदि आप number9 अक्षरों की लंबाई चाहते हैं, तो बाईं ओर शून्य उपयोग के साथ गद्देदार:

print('{:09.3f}'.format(number))

इस प्रकार, यदि number = 4.656, आउटपुट है:00004.656

आपके उदाहरण के लिए आउटपुट इस तरह दिखेगा:

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers: 
    print('{:010.4f}'.format(x))

प्रिंट:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000

एक उदाहरण जहां यह उपयोगी हो सकता है, जब आप वर्णमाला क्रम में फ़ाइल नाम को ठीक से सूचीबद्ध करना चाहते हैं। मैंने कुछ लिनक्स सिस्टम में देखा, संख्या है: 1,10,11, .. 2,20,21, ...

इस प्रकार यदि आप फ़ाइल नाम में आवश्यक संख्यात्मक क्रम लागू करना चाहते हैं, तो आपको उचित संख्या में शून्य के साथ पैड को छोड़ना होगा।


2

पायथन 3 में।

GPA = 2.5
print(" %6.1f " % GPA)

6.1fडॉट्स के बाद का मतलब यह है कि यदि आप बिंदुओं के बाद 2 अंक प्रिंट करते हैं तो आपको केवल %6.2fऐसे %6.3fअंक चाहिए जो बिंदु के बाद 3 अंक प्रिंट करते हैं।


0

मुझे सरणियों के लिए कुछ समान चाहिए था। इससे मुझे मदद मिली

some_array_rounded=np.around(some_array, 5)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.