function truncate_number( $number, $precision = 2) {
// Zero causes issues, and no need to truncate
if ( 0 == (int)$number ) {
return $number;
}
// Are we negative?
$negative = $number / abs($number);
// Cast the number to a positive to solve rounding
$number = abs($number);
// Calculate precision number for dividing / multiplying
$precision = pow(10, $precision);
// Run the math, re-applying the negative value to ensure returns correctly negative / positive
return floor( $number * $precision ) / $precision * $negative;
}
20 回答
解决此问题的另一种更奇特的方法是使用bcadd(),为
0
的$ right_operand使用虚拟值 .round_to_2dp
是用户定义的函数,除非您发布了该函数的声明,否则无法执行任何操作但是,我的猜测是这样做
number_format($number,2);
使用PHP number_format()函数 . 例如
输出将是:
7,234,545,423.00
我自己做 .
这将在十进制后正好显示两位数 .
Advantage: 如果要仅在浮点值后显示两位数而不是int,则使用此值 .
你可以使用number_format():
例:
此函数返回 string .
或者,
使用round()(如果您只期望float格式的数字,请使用,否则使用number_format()作为answer given by Codemwnci):
从手册:
...
echo round(8.5,0,PHP_ROUND_HALF_UP); // 9
echo round(8.5,0,PHP_ROUND_HALF_DOWN); // 8
echo round(8.5,0,PHP_ROUND_HALF_EVEN); // 8
echo round(8.5,0,PHP_ROUND_HALF_ODD); // 9
?>
尝试:
输出将是:
http://php.net/manual/en/function.round.php
例如
你可以使用php
printf
或sprintf
函数:sprintf
示例:您也可以在没有
echo
的情况下运行,ex: sprintf("%.3f",$num);
输出:
或者,使用
printf
:输出:
使用PHP number_format()函数 .
对于条件舍入,即 . 显示小数,它确实需要,否则整数
123.56 => 12.56
123.00 => 123
这将在小数点后给你2个数字 .
如果没有舍入数字,它将返回5.98 .
如果要在整个项目中使用2位十进制数,则可以定义
然后,以下函数将产生您想要的结果
但是如果你不使用bcscale函数,你需要编写如下代码来获得你想要的结果
了解更多
http://php.net/manual/en/ref.bc.php
http://php.net/manual/en/function.bcscale.php
舍入正确地舍入数字,并且sprintf将其强制为2位小数,如果它在舍入后恰好只有1位小数 .
没有圆的数字
在这里我得到2位小数 . (点)使用函数..
以上功能的结果:
New Correct Answer
使用PHP本机函数bcdiv
您可以使用PHP round()函数 .