有没有办法将php Web应用程序的所有浮点值四舍五入到小数点后两位?
我已经完成了Web应用程序的开发,但在开发过程中,我没有考虑浮点精度,现在我的客户希望它们被精确到2位小数。
我知道这样做的一种方法是在我使用浮点的地方使用round()
函数,但我需要知道一个快捷方式。请帮忙。
答案 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.