PHP 计算不正确

Incorrect PHP calculation

谁能解释一下 PHP 中发生这种情况的原因:

echo (0.29*100)%100  // result 28

这可能很简单,但逻辑上我没有看到任何解释。大概是 PHP 在后台工作的方式。

当我 运行 进入这种情况时,我试图获得数字的前两位小数。结果自然应该是29。

如果我对乘法进行四舍五入,结果很好:

echo (round(0.29*100))%100  // result 29

如果你运行那个代码

echo (0.29*100)%100;

in in in in PHP8.1.1错误信息给你一个线索

PHP 8.1.1
Deprecated: Implicit conversion from float 28.999999999999996 to int loses precision in D:\PHP-SOURCE\Testing\tst.php on line 14
Call Stack: 0.0001 393688 1. {main}() D:\PHP-SOURCE\Testing\tst.php:0
28