n10*_*000 4 python math floating-point sum list
我想找到浮点数列表的总和并检查它是否是整数:
l = [0.85, 0.85, 0.15, 0.15]
Run Code Online (Sandbox Code Playgroud)
l显然,和是 2.0。但 Python 不同意,由于浮点数限制:
> sum(l)
1.9999999999999998
Run Code Online (Sandbox Code Playgroud)
因此,我选择的方法sum(l).is_integer(),将返回False。
评估列表是否为整数的更好方法是什么?
您可以使用该decimal软件包。
>>> from decimal import Decimal
>>> l = [Decimal(x) for x in ['0.85', '0.85', '0.15', '0.15']]
>>> s = sum(l)
>>> s
Decimal('2.00')
>>> s == int(s)
True
Run Code Online (Sandbox Code Playgroud)