使用 PHP 截断浮点数
2022-08-30 20:14:26
当浮点数需要被截断到浮点后的某个数字时,事实证明这并不容易做到。例如,如果截断必须对点后的第二位数字进行截断,则数字应为
45.8976 => 45.89, 0.0185 => 0.01
(点后的第二位数字不按点后的第三位数字舍入)。
函数如 、 、 将数字四舍五入并打印出来round()
number_format()
sprintf()
45.8976 => 45.90, 0.0185 => 0.02
我遇到了两种解决方案,我想知道它们是否足够好,哪一种更好使用
1.
function truncNumber( $number, $prec = 2 )
{
return bccomp( $number, 0, 10 ) == 0 ? $number : round( $number - pow( 0.1, bcadd( $prec, 1 ) ) * 5, $prec );
}
2.
function truncNumber($number, $prec = 2 )
{
return sprintf( "%.".$prec."f", floor( $number*pow( 10, $prec ) )/pow( 10, $prec ) );
}