在python中保持尾随零

2024-05-16 10:54:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个表示金钱的类,我遇到的一个问题是"1.50" != str(1.50)。str(1.50)等于1.5,突然,噗的一声。45美分已经消失了,现在是1美元5美分。不是一美元五十美分。我能阻止str这么做吗,还是我做错了什么?这是Python 2顺便说一句


Tags: 金钱消失str
3条回答
x = 1.500000

print '%.2f' % x
print '{:.3f}'.format(x)

结果

1.50
1.500

可以对字符串使用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

相关问题 更多 >