number_format () вызывает ошибку «Обнаружено неверно сформированное числовое значение» - PullRequest
13 голосов
/ 01 июля 2011

Я использую number_format для округления числа с плавающей запятой только до 2 десятичных цифр.Проблема в том, что некоторые из моих входных данных не имеют более 2 десятичных цифр для начала.Таким образом, код:

number_format($value, 2)

Вместо мирного добавления 0, если ему не хватает десятичных цифр, возникают ошибки в журнале Apache, а это нежелательно.

Итак number_format(2.1, 2)или number_format(0, 2) вызовет ошибку в журнале Apache.

[Чт 30 июня 17:18:04 2011] [ошибка] [клиент 127.0.0.1] Примечание PHP: Обнаружено некорректное числовое значениев /home/tahoang/Desktop/Projects/weatherData/weatherData.php в строке 41

Как это исправить?

Ответы [ 5 ]

42 голосов
/ 01 июля 2011

Попробуйте преобразовать первый параметр типа number_format () в число с плавающей точкой:

$format = number_format((float)0, 2);

или

$format = number_format(floatval(0), 2);
6 голосов
/ 28 января 2015

Попробуйте заменить десятичную точку и после этого привести к плавающему.

var_dump((float)number_format((float)str_replace(",", ".", "20,5"), 2, ".", ""));
result: float(20.5);

Без замены:

var_dump((float)number_format(floatval("20,5"), 2, ".", ""));
result: float(20);
var_dump((float)number_format((float) "20,5", 2, ".", ""));
result: float(20);
0 голосов
/ 23 февраля 2019

При выполнении расчетов используйте

number_format($value, 2, ".", "")

И если вы хотите отображать числа с .00 в конце (например, "50.50", а не "50.5"), тогда вы быиспользуйте

numer_format($value, 2)

0 голосов
/ 08 января 2018

Функция распознает его как строку.

Преобразовать в число, добавив ноль:

number_format($NUMBER+0)
0 голосов
/ 05 июня 2015

Я использовал это:

str_replace(array(".", ","), array(",", "."), $value)

Может быть, это кому-нибудь поможет.

...