Установить точность для числа float в PHP

Я получаю номер из базы данных, и это число может быть либо float либо int .

Мне нужно установить десятичную точность номера в 3 , что делает число не более чем (относительно десятичных знаков) 5.020 или 1518845.756 .

Использование PHP

 round($number, $precision) 

Я вижу проблему:

Он округляет число. Мне нужна функция, чтобы сократить сокращение десятичных знаков без изменения их значений, которые, как кажется, не кажутся round( ) .

Solutions Collecting From Web of "Установить точность для числа float в PHP"

Вы можете использовать number_format() для достижения этого:

 echo number_format((float) $number, $precision, '.', ''); 

Это будет конвертировать 1518845.756789 в 1518845.757 .

Но если вы просто хотите сократить число десятичных разрядов до 3, а не раунд , то вы можете сделать следующее:

 $number = intval($number * ($p = pow(10, $precision))) / $p; 

Сначала это может выглядеть пугающе, но концепция действительно проста. У вас есть число, вы умножаете его на 10 3 (оно становится 1518845756.789 ), отбрасывают его до целых чисел, поэтому все после удаления трех знаков после запятой (становится 1518845756 ), а затем делят результат на 10 3 (становится 1518845.756 ).

демонстрация

Его звук напоминает floor с десятичными знаками. Таким образом, вы можете попробовать что-то вроде

 floor($number*1000)/1000 

Если я правильно понимаю, вы не хотите, чтобы округление происходило, и вам нужно, чтобы точность была равной 3.

Поэтому идея состоит в том, чтобы использовать number_format() для точности 4, а затем удалить последнюю цифру:

 $number = '1518845.756789'; $precision = 3; echo substr(number_format($number, $precision+1, '.', ''), 0, -1); 

Отобразится:

 1518845.756 

скорее, чем:

 1518845.757 

Ссылки: number_format() , substr()