2012-01-08 13 views
5

में राउंडिंग फ्लोट अप $ .01 एक प्रोग्राम पर काम कर रहा हूं जो संख्याओं को फ्लोट्स के रूप में संग्रहीत करता है जो मैं अंततः एक फ़ाइल को मुद्रा के रूप में लिखता हूं। मैं वर्तमान में गोल() फ़ंक्शन का उपयोग 2 दशमलव तक करने के लिए कर रहा हूं, लेकिन व्यवसाय क्षेत्र मुझे अगले पैनी के चारों ओर घूमना चाहेगा, इससे कोई फर्क नहीं पड़ता कि तीसरा दशमलव क्या है। उदाहरण के लिए:पाइथन

x = 39.142 

इस मामले में मैं x को 39.15 तक गोल करने की कोशिश कर रहा हूं। जाहिर है जब मैं दौर समारोह मैं 39.14 मिलता है ... ऐसा

>>> round(x, 2) 
    39.14 

वहाँ एक रास्ता मैं हमेशा अगले पैसा में इसे राउंड कर सकता है? मुझे जिक्र करना चाहिए कि जिन नंबरों के साथ मैं काम कर रहा हूं उन्हें फाइल के रूप में मुद्रित किया जाता है।

+4

यदि यह मुद्रा है, तो कृपया फ्लोट के साथ काम न करें। यह सिर्फ परेशानी के लिए पूछ रहा है। यह निश्चित रूप से किया जा सकता है, लेकिन यह इसके लायक से अधिक परेशानी है। – harold

+2

@ लांसकोलिन्स: आपके द्वारा चुने गए उत्तर में काफी गलत है। मेरी टिप्पणियां देखें। –

उत्तर

14

का उपयोग decimal module:

import decimal 
D = decimal.Decimal 
cent = D('0.01') 

x = D('39.142') 
print(x.quantize(cent,rounding=decimal.ROUND_UP)) 
# 39.15 

दशमलव गोलाई के लिए कई विकल्प हैं। विकल्प और उनके अर्थ here मिल सकते हैं।

+0

+1 यह स्वीकार्य उत्तर होना चाहिए। टिम हटा दिया जाना चाहिए। –

+0

टिम - मैंने unutbu के जवाब स्वीकार किए। –

1

यदि आप इसे सेंट में लिखना चाहते हैं, तो आप फ्लोट डॉलर से सेंट पूर्णांक प्राप्त करने के लिए int (x * 100 + .5) का उपयोग कर सकते हैं।