Мой номер: 53.199999999999996
Я попробовал все это:
sprintf("%01.2f", $number); // 53.20
sprintf('%0.2f', $number); // 53.20
floor(($number * 100)) / 100; // 53.2
intval(($number * 100)) / 100; // 53.2
Я хочу: 53.19
Как я могу это сделать?
Вы можете использовать number_format (): http://php.net/number_format
$number = 53.1999999
echo int() number_format((float)$number, 2, '.', '');
//53.19
Вам нужен floor () таким образом:
echo floor($number*100)/100;
Или вы приведете к целому числу:
echo 0.01 * (int)($number*100);
Таким образом, он не будет округляться.
вы должны установить точность (с плавающей запятой) перед установкой этого числа с плавающей запятой
ini_set('precision', 17);
$number = 53.199999999999996;
$number = ($pos = strpos($number,'.')) ? substr($number,0,$pos + 3) : number_format($number);
echo $number ;
выход :
53,19
PHP круглые числа с плавающей запятой с этим параметром, если вы устанавливаете переменную без кавычек, например:
$number = 53.199999999999996;
echo $number;
PHP округлит это число
после var_dump, print, echo, … вывод будет:
53,2
наши вы можете установить числовое значение с цитированием
$number = '53.199999999999996';
echo $number;
PHP не округляет это, потому что теперь это строка!
Я проверил и использую intval его работы на php версии 5.3, однако вы упомянули, что он не работает с вашей стороны.
$number = 53.1999999;
echo intval(($number*100))/100;