我有一个代码如下:
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似乎将一个值分配给多个间隔。
还有另一种比较这两个浮点数更准确的方法吗?
答案 0 :(得分:0)
与舍入错误无关。没有任何东西。但是如果你有间隔[0.49609375,0.5]和[0.5,0.50390625],那么它们两个都是0.5。改为使用半开间隔,即将<=
中的一个更改为<
。
顺便说一下,通过乘以256来简单计算区间数会更简单快捷。
problist[min(int(proba * 256) + 1, 256)] += 1