PHP 错误的舍入精度

PHP wrong round precision

嗨!

我一直在尝试用 PHP 对数字进行四舍五入,但出现了精度错误。

$test = 53.974999994;
echo round($test, 2);

我想要的结果是53.98。

但是这段代码给了我 53.97。

有人能告诉我为什么吗?

谢谢!

你能试试这个吗:

$test = 53.974999994;
echo round(round($test, 3), 2);

解释:

按照提问者的说法,其实重要的是点后的前两位数,在这种情况下,先四舍五入成3位,再降到2位,达到了预期效果。

round($test, 3) 等于 53.985round(53.985, 2) 将得到 53.99

我猜代码工作正常,但你要找的结果是不同的,如果你想把一个数字四舍五入到百分之一,你必须在数字上取第三位小数,例如:53.974

所以,新数字将是 53.97,因为小数点后第三位不允许你将数字近似为 53.98
take a look

如果您想执行以下操作: 小数 n 近似于小数 n-1 等等。

你可以试试这个

`

$test = 53.974999994;

function round_with_n_decimals($number, $decimals, $decimals_to_count){
    while($decimals_to_count >= $decimals){
        $number = round($number, $decimals_to_count);
        $decimals_to_count--;
    }
    return $number;
}

echo round_with_n_decimals($test, 2, 3);

`