2024-05-16 10:54:47 发布
网友
我正在编写一个表示金钱的类,我遇到的一个问题是"1.50" != str(1.50)。str(1.50)等于1.5,突然,噗的一声。45美分已经消失了,现在是1美元5美分。不是一美元五十美分。我能阻止str这么做吗,还是我做错了什么?这是Python 2顺便说一句
"1.50" != str(1.50)
x = 1.500000 print '%.2f' % x print '{:.3f}'.format(x)
结果
1.50 1.500
可以对字符串使用format方法来指定要表示的小数位数:
format
>>> "{:.2f}".format(1.5) '1.50'
但是更好的方法是使用^{}来表示金钱,因为如果你在做算术的话,二进制浮点数的表示问题可能会给你一些结果。该模块的文档中特别提到了其中的一些问题—money应用程序中最有趣的问题之一是:
>>> 0.1+0.1+0.1-0.3 5.551115123125783e-17 >>> from decimal import Decimal >>> Decimal('.1') + Decimal('.1') + Decimal('.1') - Decimal('.3') Decimal('0.0')
使用货币时,始终使用十进制类表示货币。
http://docs.python.org/2/library/decimal.html
结果
可以对字符串使用
format
方法来指定要表示的小数位数:但是更好的方法是使用^{} 来表示金钱,因为如果你在做算术的话,二进制浮点数的表示问题可能会给你一些结果。该模块的文档中特别提到了其中的一些问题—money应用程序中最有趣的问题之一是:
使用货币时,始终使用十进制类表示货币。
http://docs.python.org/2/library/decimal.html
相关问题 更多 >
编程相关推荐