gpt4 book ai didi

PHP 异常/怪异行为

转载 作者:可可西里 更新时间:2023-11-01 00:23:07 25 4
gpt4 key购买 nike

当我运行时:

for($o=1;$o<=655;$o++){
$r = $r+0.01;
echo $r." ";}

在某些时候我得到:

...4.29 4.3 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.4
4.41 4.42 4.4299999999999 4.4399999999999 4.4499999999999
4.4599999999999 4.4699999999999 ...

但是当我运行时:

for($o=1;$o<=5;$o+=0.01){
echo $o." ";
}

异常开始于:

4.34 4.35 4.36 4.37 4.38 4.3899999999999 4.3999999999999

为什么加法是 for 循环的一部分或在 for 循环内有区别?

最佳答案

欢迎来到舍入误差的奇迹。

0.01 不能精确表示为有限二进制分数,因此如果将它重复添加到另一个 float ,最终会出现舍入错误。

您看到舍入误差的具体点取决于所涉及数字的二进制扩展如何产生舍入误差。

关于PHP 异常/怪异行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13279919/

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