+10 投票
分类:Python编程与实践 | 用户: (11.7k 分)

1个回答

+2 投票
用户: (45.4k 分)
采纳于 用户:
 
已采纳

浮点数的一个普遍问题是它们并不能精确的表示十进制数,即使是最简单的数学运算也会产生小的误差,比如:

>>> 1 + 1.11
2.1100000000000003
>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False

这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征(参考官方文档)15. 浮点算术:争议和限制 。 由于Python的浮点数据类型使用底层表示存储数据,因此没办法避免这样的误差。如果想更加精确(并能容忍一定的性能损耗),可以用 decimal 模块:

>>> from decimal import Decimal
>>> a = Decimal('1')
>>> b = Decimal('1.11')
>>> a + b
Decimal('2.11')

 

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...