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