2012-05-08 13 views
10

मुझे पायथन में कुछ दशमलव स्थान स्वरूपण करने की आवश्यकता है। अधिमानतः, फ़्लोटिंग पॉइंट मान हमेशा कम से कम एक प्रारंभिक 0 और एक दशमलव स्थान दिखाना चाहिए। उदाहरण:पायथन में अधिकतम संख्या में दशमलव स्थानों के साथ एक फ्लोट प्रारूपित करें और अतिरिक्त शून्य पैडिंग के बिना

Input: 0 
Output: 0.0 

अधिक दशमलव स्थानों वाले मानों को तब तक दिखाना जारी रखना चाहिए जब तक कि यह 4 आउट हो जाए। तो:

Input: 65.53 
Output: 65.53 

Input: 40.355435 
Output: 40.3554 

मुझे पता है कि मैं {0.4f} उपयोग कर सकते हैं यह चार दशमलव स्थानों के लिए बाहर मुद्रित करने के लिए प्राप्त करने के लिए, लेकिन यह अवांछित 0s के साथ पैड होगा। क्या एक प्रारूपण कोड है जो इसे निश्चित दशमलव तक प्रिंट करने के लिए कहता है, लेकिन यदि कोई डेटा नहीं है तो उन्हें खाली छोड़ दें? मेरा मानना ​​है कि सी # इस तरह कुछ हासिल करता है:

floatValue.ToString("0.0###") 

जहां # प्रतीक एक स्थान का प्रतिनिधित्व करते हैं जिसे खाली छोड़ दिया जा सकता है।

+0

यह मुझे सी # ईर्ष्या देता है। –

उत्तर

14

क्या आप के लिए round समारोह की तरह राउंडिंग तरीकों से adressed किया जाना चाहिए पूछ रहे हैं और करते हैं फ्लोट नंबर को अपने स्ट्रिंग प्रस्तुति के साथ स्वाभाविक रूप से प्रदर्शित किया जा रहा है।

>>> round(65.53, 4) 
'65.53' 
>>> round(40.355435, 4) 
'40.3554' 
>>> round(0, 4) 
'0.0' 
+0

..... हाँ। हाँ, वह होगा। मैं स्वरूपण की तलाश में था क्योंकि इस तरह मूल कोड ने इसे पूरा किया, लेकिन यह वही है जो मैं चाहता हूं। मान लीजिए कि आप इसे मस्तिष्क-फार्ट कह सकते हैं। – KChaloux

2

क्षमा करें, सबसे अच्छा मैं कर सकते हैं:

' {:0.4f}'.format(1./2.).rstrip('0') 

सही किया:

ff=1./2. 
' {:0.4f}'.format(ff).rstrip('0')+'0'[0:(ff%1==0)] 
+0

आप वहां से सबसे अधिक रास्ते में हैं। उसका सी # उदाहरण '1' को' 1.0 'के रूप में प्रारूपित करेगा और आपका इसे' '' 'के रूप में प्रारूपित करेगा। –

+0

फ्लोट ('{: 0.4f}'। प्रारूप (x) .rstrip ('0')) यह भी गुजरने के साथ इस मुद्दे का ख्याल रखना चाहिए। >>> फ्लोट ('{: 0.4f}' प्रारूप (1) .rstrip ('0')) 1.0 – tapan

+0

@tapan: यह एक फ्लोट देता है, स्ट्रिंग नहीं। –

0
>>> def pad(float, front = 0, end = 4): 
    s = '%%%s.%sf' % (front, end) % float 
    i = len(s) 
    while i > 0 and s[i - 1] == '0': 
     i-= 1 
    if s[i - 1] == '.' and len(s) > i: 
     i+= 1 # for 0.0 
    return s[:i] + ' ' * (len(s) - i) 

>>> pad(0, 3, 4) 
'0.0 ' 
>>> pad(65.53, 3, 4) 
'65.53 ' 
>>> pad(40.355435, 3, 4) 
'40.3554' 
+0

आप वहां से अधिकतर हैं। उसका सी # उदाहरण '1.0' को' 1.0 'के रूप में प्रारूपित करेगा और आपका इसे' '' 'के रूप में प्रारूपित करेगा। –

+0

मैंने 1.0 – User

+0

दिलचस्प समाधान का समाधान किया। यह पूरी संख्या के लिए काम करता है, लेकिन कहने के मूल्य में गुजरने की कोशिश कर रहा है, 2.5 हमेशा 'कोई नहीं' वापस लौटता प्रतीत होता है। मैं थोड़ा और चारों ओर पोक करेंगे। मैं उम्मीद कर रहा था कि इसे संभालने के लिए प्रारूप समारोह में कुछ बनाया गया था। – KChaloux

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

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