Минимальная точность PHP по числу - PullRequest
4 голосов
/ 31 августа 2010

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

Примеры чисел и ожидаемое преобразование:

  • 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

Любые идеи?

Ответы [ 3 ]

7 голосов
/ 31 августа 2010
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
3 голосов
/ 31 августа 2010
$number = split('.', $dbNumber);
if(strlen($number[1]) < 2)
     $resultNumber = number_format($dbNumber,2);
else
     $resultNumber = $dbNumber;

, где $ dbNumber - номер, поступающий из базы данных

0 голосов
/ 31 августа 2010

number_format(25.5, 2)

http://us.php.net/number_format

...