Truncar números flotantes con PHP

Cuando un número flotante necesita truncarse a un cierto dígito después del punto flotante, resulta que no es fácil hacerlo. Por ejemplo, si el truncamiento debe hacerse al segundo dígito después del punto, los números deben ser
45.8976 => 45.89, 0.0185 => 0.01
(el segundo dígito después del punto no se redondea según el tercer dígito después del punto).
Funciones como round (), number_format (), sprintf () redondean el número e imprimen
45.8976 => 45.90, 0.0185 => 0.02

He encontrado dos soluciones y me pregunto si son lo suficientemente buenas y cuál es mejor para usar

 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 ) );
}

Respuestas a la pregunta(11)

Su respuesta a la pregunta