PHP字符串四舍五入到小数点后两位的正确方法是什么?

$number = "520"; // It's a string from a database

$formatted_number = round_to_2dp($number);

echo $formatted_number;

输出应该是520.00;

round_to_2dp()函数应该如何定义?


当前回答

解决这个问题的另一种更奇特的方法是使用bcadd(),并为$right_operand添加一个虚拟值0。

$formatted_number = bcadd($number, 0, 2);

其他回答

$twoDecNum = sprintf('%0.2f', round($number, 2));

四舍五入可以正确地将数字四舍五入,如果四舍五入后恰好只有1位小数,则sprintf会强制将其四舍五入到小数点后2位。

另外,

$padded = sprintf('%0.2f', $unpadded); // 520 -> 520.00

添加到其他答案,因为默认情况下,number_format()将添加数千分隔符。

要删除它,请执行以下操作:

$number = number_format($number, 2, ".", "");

你可以使用number_format():

return number_format((float)$number, 2, '.', '');

例子:

$foo = "105";
echo number_format((float)$foo, 2, '.', '');  // Outputs -> 105.00

这个函数返回一个字符串。

http://php.net/manual/en/function.round.php

e.g.

echo round(5.045, 2);    // 5.05

echo round(5.055, 2);    // 5.06