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.985
而 round(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);
`
嗨!
我一直在尝试用 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.985
而 round(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);
`