gpt4 book ai didi

python - 大于或等于 float 失败

转载 作者:行者123 更新时间:2023-12-01 13:01:48 31 4
gpt4 key购买 nike

我正在运行针对一些数据编写的小型 Python 测试,得到了一些奇怪的结果。归结为:

priceDiff = 219.92 - 219.52
if(priceDiff >= .40):
print "YES"
else:
print "NO"

结果为“否”

为什么 0.40 不是 >= .40?

最佳答案

Python 提供受控环境以使用“Decimal”形式的 float 。它提供了多种选项来控制/调整舍入量以及不同的策略。(https://docs.python.org/3.5/library/decimal.html#rounding-modes)。

from decimal import Decimal, ROUND_HALF_EVEN
a = Decimal(219.92).quantize(Decimal('.01'), rounding=ROUND_HALF_EVEN)
b = Decimal(219.52).quantize(Decimal('.01'), rounding=ROUND_HALF_EVEN)
priceDiff = a - b
cmp = Decimal(0.40).quantize(Decimal('.01'), rounding=ROUND_HALF_EVEN)

if priceDiff.compare(cmp) >= 0:
print "YES"
else:
print "NO"

print(d)
print(d2)
print(priceDiff)
print(cmp)

恕我直言,这在可读性和计算的实现方面更好,这些计算对精度敏感 w.r.t 应用程序。希望这有帮助

关于python - 大于或等于 float 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690800/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com