Минимальная точность PHP для числа

У меня есть список чисел из базы данных в диапазоне от 0,001 до 10, и мне нужно отобразить их с минимальной точностью до 2 знаков после запятой, но без максимальной точности.

Примерные цифры и ожидаемая конверсия:

  • 1 -> 1.00
  • 0.1 -> 0.10
  • 0.01 -> 0.01
  • 0.001 -> 0.001
  • 1.234 -> 1.234
  • 0.035 -> 0.035
  • 25.5 -> 25.50

Любые идеи?


person Mike Valstar    schedule 31.08.2010    source источник


Ответы (3)


function min_precision($x, $p)
{
  $e = pow(10,$p);
  return floor($x*$e)==$x*$e?sprintf("%.${p}f",$x):$x;
}

foreach (Array(1,0.1,0.01,0.001,1.234,0.035,25.5) as $x)
{
  echo $x . " -> " . min_precision($x,2) . "\n";
}

выход:

1 -> 1.00
0.1 -> 0.10
0.01 -> 0.01
0.001 -> 0.001
1.234 -> 1.234
0.035 -> 0.035
25.5 -> 25.50
person matja    schedule 31.08.2010

$number = split('.', $dbNumber);
if(strlen($number[1]) < 2)
     $resultNumber = number_format($dbNumber,2);
else
     $resultNumber = $dbNumber;

где $dbNumber — номер из базы данных

person Kusanagi2k    schedule 31.08.2010
comment
split() использует в качестве первого аргумента регулярное выражение, а не строковый литерал. Чтобы это работало, либо измените его на explode('.', $dbNumber) (предпочтительно для PHP 5.3, поскольку split устарело), ​​либо используйте split('\.', $dbNumber). - person Jason Burbage; 01.03.2012

number_format(25.5, 2)

http://us.php.net/number_format

person efritz    schedule 31.08.2010