2011-12-26 11 views
5

मेरे पास सेंट में कीमत का प्रतिनिधित्व करने वाला एक पूर्णांक है। पायथन प्रारूप तारों का उपयोग करके, मैं इस मान को दो दशमलव स्थानों के साथ डॉलर में कैसे परिवर्तित कर सकता हूं? उदाहरण:सेंट्स का प्रतिनिधित्व करने वाले एक पूर्णांक को एक फ्लोट प्रतिनिधित्व करने वाले डॉलर में परिवर्तित करने के लिए पाइथन स्ट्रिंग स्वरूपण का उपयोग कैसे करें?

1234 => 12.34 
5 => 0.05 
999 => 9.99 

संपादित करें: मुझे कुछ पृष्ठभूमि देना चाहिए। मैं यह सुनिश्चित करने के लिए पूर्णांक को ढीला नहीं करता हूं कि मैं डेटाबेस में कीमतों को पूर्णांक के रूप में संग्रहीत कर रहा हूं। मैं दशमलव डेटाटाइप का उपयोग नहीं करना चाहता क्योंकि इन मानों का उपयोग जावास्क्रिप्ट में गणना में भी किया जाएगा, इसलिए इसके लिए पूर्णांक पूर्ण करने के लिए पूर्ण होंगे। मैं स्ट्रिंगफॉर्म टैग का उपयोग करके स्वरूपित मान को Django टेम्पलेट में प्रदर्शित करने में सक्षम होना चाहता हूं। इस प्रकार, 100 से संख्या को विभाजित करना काम नहीं करता है। विभाजित किए बिना दशमलव बिंदु जोड़ने का कोई तरीका है?

+1

मुद्रा के लिए नाव का प्रयोग न करें। यह बिल्कुल गलत है। दशमलव आपकी आवश्यकताओं के लिए पूरी तरह से काम करता है। इसे एक स्ट्रिंग (जावास्क्रिप्ट के लिए) में परिवर्तित किया जा सकता है और सभी वित्तीय गणना दशमलव के साथ सही तरीके से काम करती है। L10n उदाहरण भी शामिल करने के लिए –

उत्तर

12

आप पैसे का प्रतिनिधित्व करने के लिए कभी भी फ्लोट का उपयोग करने से बचने के लिए कड़ी मेहनत करनी चाहिए (संख्यात्मक गलतता बहुत आसानी से रेंग सकती है)। दशमलव मॉड्यूल पैसे का प्रतिनिधित्व करने के लिए एक उपयोगी डेटाटाइप प्रदान करता है क्योंकि यह वास्तव में 0.05 जैसे दशमलव संख्याओं का प्रतिनिधित्व कर सकता है।

यह इस तरह इस्तेमाल किया जा सकता:

import decimal 
cents = 999 
dollars = decimal.Decimal(cents)/100 
print dollars 
5

str.format का उपयोग करना:

for i in (1234,5,999): 
    print('{:.2f}'.format(i/100.)) 

पैदावार

12.34 
0.05 
9.99 

python2.6 में '{:.2f}' के बजाय '{0:.2f}' का उपयोग करें।

6

आप, स्थानीयकरण के बारे में परवाह नहीं है, तो बस 100 से विभाजित और स्वरूपित:

>>> for cents in [ 1234, 5, 999 ]: 
...  '{0:.02f}'.format(float(cents)/100.0) 
... 
'12.34' 
'0.05' 
'9.99' 

आप, locale मॉड्यूल स्थानीयकरण के बारे में परवाह है, तो का उपयोग करें:

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, "") # use the user-default locale 
'en_US.UTF-8' 
>>> for cents in [ 1234, 5, 999 ]: 
...  locale.currency(float(cents)/100.0) 
... 
'$12.34' 
'$0.05' 
'$9.99' 
+0

+1। बहुत बढ़िया। – AgentK

+0

मुझे यकीन नहीं है कि 'फ्लोट्स' और मुद्रा के साथ काम करना एक अच्छा विचार है। –

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

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