浮点数计算问题
python 中需要大家计算1.1-1的值,大家可能的以为是 1。实则不然, python 去执行,会发现结果却为0.10000000000000009,这是为什么呢?
>>> 1.1-1
0.10000000000000009
其实,浮点数在运算过程中并没有保证完全精确。大家也许会认为这是 Python 中的 bug。但这并不是 Python 中的 bug ,它和计算机硬件中如何处理浮点数有关。
是什么原因导致了这种现象呢?浮点数在计算机硬件中以二进制的形式存在,但是我们现在看到的都是十进制,而十进制的浮点数不能都完全精确的表示为二进制小数。
如何输出正确浮点数
可借鉴以下代码,可调用 decimal 第三方库的 Decimal
>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True