2013-12-10 85 views
1
$ python 
Python 2.7.3 (default, Apr 19 2012, 11:28:02) 
[GCC 4.5.3 20120403 (ALT Linux 4.5.3-alt3)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> g = 1.175 
>>> "%0.2f" % g 
'1.18' 
>>> g = 11.175 
>>> "%0.2f" % g 
'11.18' 

到目前爲止,這麼好。但現在:解決錯誤外觀的方法

>>> g = 111.175 
>>> "%0.2f" % g 
'111.17' 

「111.17」,而不是預期的「111.18」。我想我理解什麼和爲什麼會發生,但我需要想法如何獲得預期的結果。 Excel和OpenOffice Calc都顯示「111.18」,因此應該有可能。

+1

我認爲Excel和OpenOffice的Calc中不使用浮點數,至少不是直接暴露在用戶界面的方式。 –

回答

2

可以使用decimal模塊的位置:

>>> import decimal 
>>> myothercontext = decimal.Context(rounding=decimal.ROUND_HALF_UP) 
>>> decimal.setcontext(myothercontext) 
>>> TWOPLACES = decimal.Decimal(10) ** -2 
>>> decimal.Decimal('111.175').quantize(TWOPLACES) 
Decimal('111.18') 
>>> decimal.Decimal('1.175').quantize(TWOPLACES) 
Decimal('1.18') 
>>> decimal.Decimal('11.175').quantize(TWOPLACES) 
Decimal('11.18') 
相關問題