精确比较浮点变量?

时间:2017-05-28 16:48:11

标签: python types numbers

我有一个代码如下:

for i in range (1, 256):
    if ((((i-1) * (1 / float(256))) <= proba) and (proba <= (i * (1 / float(256))))):
        problist[i] += 1

proba是0到1之间的浮点数(大多数是0.625或0.5)。 我想将之前计算的proba添加到特定的时间间隔。问题是由于舍入错误,python似乎将一个值分配给多个间隔。

还有另一种比较这两个浮点数更准确的方法吗?

1 个答案:

答案 0 :(得分:0)

与舍入错误无关。没有任何东西。但是如果你有间隔[0.49609375,0.5]和[0.5,0.50390625],那么它们两个都是0.5。改为使用半开间隔,即将<=中的一个更改为<

顺便说一下,通过乘以256来简单计算区间数会更简单快捷。

problist[min(int(proba * 256) + 1, 256)] += 1