所有浮点数在PHP Web应用程序中舍入到2位小数

时间:2016-06-09 18:52:59

标签: php web-applications

有没有办法将php Web应用程序的所有浮点值四舍五入到小数点后两位?

我已经完成了Web应用程序的开发,但在开发过程中,我没有考虑浮点精度,现在我的客户希望它们被精确到2位小数。

我知道这样做的一种方法是在我使用浮点的地方使用round()函数,但我需要知道一个快捷方式。请帮忙。

1 个答案:

答案 0 :(得分:1)

您可以像这样简单地使用PHP number_format

    <?php
        // FORMATTING AN INTEGER...
        $num            = 123;
        $formattedNum   = number_format( floatval($num), 2, '.', ''); // CAST  $num TO A FLOAT USING floatval();

        var_dump($formattedNum);     //<== PRODUCES: 123.00

        // FORMATTING A DOUBLE OR FLOATING POINT NUMBER...

        $num            = 123.4567890;
        $formattedNum   = number_format( floatval($num), 2, '.', '');

        var_dump($formattedNum);    //<== PRODUCES: 123.46

您可以通过创建一个Petit函数来更进一步,该函数将Number作为参数来处理它,如下所示:

    <?php
        function roundOutNumber($number){
            try{
                $rounded = number_format(floatval($number), 2, '.', '');
            }catch(Exception $e){
                throw new Exception("Method takes only Numeric inputs.");
            }   
            return $rounded;
        }

现在如果你有多个$变量,甚至包含数值数据类型的数组(int,float,double,long等),你可以简单地将每个数值数据传递给函数,如果是数组;你可以在循环中使用函数,如下所示:

    <?php
        $arrayOfNumbers = array(
            1234.5678,
            901.2345,
            67.8901,
            234.5678,
            901,
            2345
        );

        var_dump($arrayOfNumbers);

        foreach($arrayOfNumbers as $iKey=>&$numValues){
            $arrayOfNumbers[$iKey]  = roundOutNumber($numValues);
        }

        var_dump($arrayOfNumbers);

1ST VAR_DUMP显示原始阵列:

        array (size=6)
          0 => float 1234.5678
          1 => float 901.2345
          2 => float 67.8901
          3 => float 234.5678
          4 => int 901
          5 => int 2345

2ND VAR_DUMP显示:

        array (size=6)
          0 => string '1234.57' (length=7)
          1 => string '901.23' (length=6)
          2 => string '67.89' (length=5)
          3 => string '234.57' (length=6)
          4 => string '901.00' (length=6)
          5 => string '2345.00' (length=7)

确认结果HERE.