gpt4 book ai didi

基本数学的 PHP 浮点错误

转载 作者:可可西里 更新时间:2023-11-01 13:09:33 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why can't decimal numbers be represented exactly in binary?
problem with floating values

$var1 = 1;

for ( $i=0; $i<30; $i++ ) {
$var1 += 0.1;
$var2 = floor($var1);
$var3 = $var1-$var2;
if ( $var3 == 0.5 ) {
$var1 = $var2+1;
}
}

这个循环的目的是统计1.0、1.1、1.2、1.3、1.4,然后跳转到2.0、2.1、2.2等

我遇到的问题是 if 语句永远不会为真。此外,每十分之一的计算都会得出一些疯狂的科学答案。

我该如何解决这个问题?请帮忙!

编辑:我在匆忙中写了这个问题,而且它不止一个,我现在明白了。

问题的第一部分实际上是“我怎样才能使这项工作绕过这个浮点怪癖”和“为什么这个怪癖会发生!”

感谢您的所有精彩回复,我将投票选为正确答案,因为它轻松回答了“如何使这项工作成功”这一核心问题。

使用 0.49 而不是 0.5 和 > 而不是 == 就可以了。粗糙而不是世界上最好的代码,但它确实解决了最初的问题。感谢大家的其他回复,我将阅读这些回复并跟进以改进我的编码。

再次感谢。

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