使用公式计算索引来为索引设置值时,类似
$arr[((40.9+0.00004)*100000)] = 1;
,
在预期的结果中,我的数组应具有index的值,如下所示:[4090004]=>1
;
相反,我得到了[4090003]=>1
。
有人可以帮我了解发生了什么吗?
我能够通过将索引转换为字符串$arr[(string) ((40.9+0.0004)*100000)] = 1;
来解决此问题,但是我想了解导致这种情况发生的基本机制。
更新
这与问题Is floating point math broken?没有直接关系-尽管答案可能与浮点错误有关,但我试图在这里了解它如何影响我。