PHP-奇怪的乘法

PHP-奇怪的乘法,php,Php,我有以下代码: $convertedCredits = round($userBalance['points'] / $convertionPoints) * $convertionPrice; echo 'points: ' . $userBalance['points'] . ' - to: ' . $convertedCredits; 示例数据(我知道除以9再乘以9没有意义,但数据是动态的): 我的回音结果如下: points: 6000 - to: 60030 为什么会产生60030

我有以下代码:

$convertedCredits = round($userBalance['points'] / $convertionPoints) * $convertionPrice;
echo 'points: ' . $userBalance['points'] . ' - to: ' . $convertedCredits;
示例数据(我知道除以9再乘以9没有意义,但数据是动态的):

我的回音结果如下:

points: 6000 - to: 60030
为什么会产生60030?

您的php代码说:

round(6000 / 9) * 9
因此php计算600/9,得到666.667

然后在该图上使用
round()
,得到667

然后将结果乘以9,得到6003

它的行为完全符合设计

试着把你的回音线改成这个,看看会发生什么。我敢打赌你一定会成功

echo '(points: ' . $userBalance['points'] . ' - to: ' . $convertedCredits . ')  ';
我打赌额外的零来自你程序中的其他地方

(points: 6000 - to: 6003)  0

或者您的
convertionPrice

值为90。

请阅读警告。如果除法结果不是整数,则
round()
会给出错误的结果,是不是6003
ROUND(600/9)
*90的值为
60030
使用or扩展名。您确定尾随的
0
来自此特定的
echo
而不是页面下方的某个内容吗?我第一次尝试不使用ROUND,得到了相同的结果。不,它的行为不符合预期。你的结果是正确的,但是我的结果给了我60030(六万而不是六千)哦,是的。这是一个ajax调用的响应。。。天哪,我觉得自己太傻了。在我的辩护中,我一边工作一边看世界杯:p在编程时不再工作:p
(points: 6000 - to: 6003)  0