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

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

$formatted_number = round_to_2dp($number);

echo $formatted_number;

输出应该是520.00;

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


当前回答

用于条件舍入。在需要小数的地方显示小数,否则就是整数

123.56 => 12.56

123.00 => 123

$somenumber = 123.56;

$somenumber = round($somenumber,2);

if($somenumber == intval($somenumber))
{
    $somenumber = intval($somenumber);
}

echo $somenumber; // 123.56


$somenumber = 123.00;

$somenumber = round($somenumber,2);

if($somenumber == intval($somenumber))
{
    $somenumber = intval($somenumber);
}

echo $somenumber; // 123    

其他回答

bcdiv($number, 1, 2) // 2 varies for digits after the decimal point

这将显示小数点后的两位数字。

优势:

如果你只想在浮点值后显示两个数字,而不是int,那么使用这个。

另外,

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

我自己做。

$decimals = 2;
$number = 221.12345;
$number = $number * pow(10, $decimals);
$number = intval($number);
$number = $number / pow(10, $decimals);

如果你想在整个项目中使用两个十进制数字,你可以定义:

bcscale(2);

然后,下面的函数将产生你想要的结果:

$myvalue = 10.165445;
echo bcadd(0, $myvalue);
// result=10.11

但如果不使用bcscale函数,则需要编写如下代码以获得所需的结果。

$myvalue = 10.165445;
echo bcadd(0, $myvalue, 2);
// result=10.11

了解更多

BC数学函数 bcscale

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

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