Обрезка чисел с плавающей запятой с помощью PHP

Когда число с плавающей запятой нужно усечь до определенной цифры после плавающей точки, оказывается, что это сделать непросто. Например, если необходимо выполнить усечение до второй цифры после точки, числа должны быть

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 ) );
}
11
задан Nik 9 July 2019 в 16:48
поделиться