在PHP中删除后面的零直到2个小数


Remove trailing zeros until 2 decimals in PHP

我试过将其转换为floatnumber_format,但float总是四舍五入,number_format固定在您指定的小数数量上。

那么我怎么做呢?像下面的转换

11.2200 -> 11.22
11.2000 -> 11.20
11.2340 -> 11.234
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted will output "123.10"
这可能有帮助,你可以使用PHP给出的sprintf

可以使用float类型转换

echo (float) 11.2200;
echo "<br/>";
echo (float) 11.2000;
echo "<br/>";
echo (float) 11.2340;

,你必须检查小数点后的位数,然后得到如下的值:

$val=(float) 11.2000;
if(strlen(substr(strrchr($val, "."), 1))<2){
    echo number_format($val,2);
} 

您可以使用round()函数。

我轮(数量、精度模式);

的例子:

回波(圆(11.2200,2));

输出

11.22

谢谢

不确定您是否需要对此进行修复,但我刚刚遇到了同样的问题,以下是我的解决方案:

$array = array(11.2200, 11.2000, 11.2340);
foreach($array as $x)
{
    // CAST THE PRICE TO A FLOAT TO GET RID OF THE TRAILING ZEROS
    $x = (float)$x
    // EXPLODE THE PRICE ON THE DECIMAL (IF IT EXISTS)
    $pieces = explode('.',$x);
    // IF A SECOND PIECE EXISTS, THAT MEANS THE FLOAT HAS AT LEAST ONE DECIMAL PLACE
    if(isset($pieces[1]))
    {
        // IF THE SECOND PIECE ONLY HAS ONE DIGIT, ADD A TRAILING ZERO TO FORMAT THE CURRENCY
        if(strlen($pieces[1]) == 1)
        {
            $x .= '0';
        }
    }
    // IF NO SECOND PIECE EXISTS, ADD A .00 TO IT TO FORMAT THE CURRENCY VALUE
    else
    {
        $x .= '.00';
    }
}