从小数部分php修剪零

时间:2016-09-19 11:17:27

标签: php number-formatting

我的确切要求是,如果该值的第二个小数为零, 该值应该只有一个小数。对于其他人,它应该有两个小数。

eg 1. 150.00 to 150.0  
eg 2. 150.10 to 150.1  
eg 3. 150.76 to 150.76

我需要知道的是,是否有任何PHP函数可以执行此操作。

echo floatval("150.00")."<br>";
echo floatval("150.10")."<br>";
echo floatval("150.76")."<br>";

结果如下:

150
150.1
150.76

我需要150.0而不是150.我只需要知道是否有任何PHP功能。否则我将能够编写代码。

2 个答案:

答案 0 :(得分:1)

你可以使用substr()函数删除最后一个char,如果它是0.可能是下面的代码会帮你

function roundit($string)
{
 $string = number_format($string,2);
 if (substr($string, -1, 1) == '0')
 {
  $string = substr($string, 0, -1);
  echo $string;
 }
 else
 echo $string;
}
roundit('150.00');
roundit('150.10');
roundit('150.76');

答案 1 :(得分:0)

您可以编写一个简单的功能来帮助您解决这个问题。这样的事情可以解决问题:

<?php

    function removeTrailingZero($num){
        $num    = floatval($num);
        $pieces = explode(".", $num);
        for($i=0; $i<count($pieces); $i++){
            if(isset($pieces[1])){
                $pieces[1] = preg_replace("#0*$#", "", $pieces[1]);
                break;
            }else{
                $pieces[1]  = '0';
                break;
            }
        }
        return rtrim(implode(".", $pieces), ".");
        //return floatval(rtrim(implode(".", $pieces), "."));
    }

    var_dump(removeTrailingZero(123.45));
    var_dump(removeTrailingZero(67.80));
    var_dump(removeTrailingZero(90));
    var_dump(removeTrailingZero(100.00000));

    // PRODUCES:::
    string '123.45'    (length=6)
    string '67.8'      (length=4)
    string '90.0'      (length=4)
    string '100.0'     (length=5)