Python不正确地转换Float

时间:2016-06-24 14:06:27

标签: python python-2.7

有人能告诉我这里缺少什么吗?这是使用Python 2.7.11:

print float(148.95)
print float(148.95)*100
print int(float(148.95)*100)

为什么要打印:

148.95
14895.0
14894 <--- Shouldn't this be 14895?

1 个答案:

答案 0 :(得分:1)

148.95不是可以使用浮点精确表示的数字。内部存储的数字实际为148.94999999999998863131622783839702606201171875。当你乘以100时,得到14894.999999999998181010596454143524169921875。当你将它转换为整数时,它会切断.999 ...而你只剩下14894。

如果您想要一种能够精确表示具有至少两位小数精度的数字的数据类型,请考虑使用Decimal

>>> from decimal import Decimal
>>> x = Decimal("148.95")
>>> print x
148.95
>>> print x*100
14895.00
>>> print int(x*100)
14895