在python中检测浮动舍入错误的最佳方法

时间:2013-03-18 15:00:58

标签: python floating-point

所以我有一个浮动数字列表,其中一些包含舍入错误,并以0.3599999形式显示。通过将其转换为字符串并查看是否存在一堆999来检测它是微不足道的。我想知道一个python黑客将如何做到这一点,或者是否有数学方法来做到这一点。

由于

2 个答案:

答案 0 :(得分:2)

考虑使用Python的十进制模块

>>> from decimal import Decimal
>>> Decimal(0.35)
Decimal('0.34999999999999997779553950749686919152736663818359375')

答案 1 :(得分:1)

另请参阅Numpy的assert_approx_equal()函数:

>>> np.testing.assert_approx_equal(0.12345677777777e-20, 0.1234567e-20)
>>> np.testing.assert_approx_equal(0.12345670e-20, 0.12345671e-20,
                               significant=8)
>>> np.testing.assert_approx_equal(0.12345670e-20, 0.12345672e-20,
                               significant=8)
...
<type 'exceptions.AssertionError'>:
Items are not equal to 8 significant digits:
 ACTUAL: 1.234567e-021
 DESIRED: 1.2345672000000001e-021