number_format() вызывает ошибку Обнаружено некорректно сформированное числовое значение

Я использую number_format для округления чисел с плавающей запятой до двух десятичных цифр. Проблема в том, что некоторые из моих входных данных не имеют более 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.

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


person Tu Hoang    schedule 01.07.2011    source источник
comment
@zerkms: PHP Notice: A non well formed numeric value encountered   -  person Tu Hoang    schedule 01.07.2011
comment
Вы пробовали number_format(0.0, 2)?   -  person Emre Yazici    schedule 01.07.2011
comment
Мы не сможем вам помочь, если вы не сообщите нам, какая у вас ошибка.   -  person Jhourlad Estrella    schedule 01.07.2011
comment
@eyazici: Да, возникла та же ошибка.   -  person Tu Hoang    schedule 01.07.2011
comment
@ yes123: Мой стек LAMP обновлен, сэр.   -  person Tu Hoang    schedule 01.07.2011


Ответы (5)


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

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

or

$format = number_format(floatval(0), 2);
person Emre Yazici    schedule 01.07.2011

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

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);
person user2659841    schedule 28.01.2015

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

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

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

person Matheno    schedule 05.06.2015

При расчетах используйте

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

И если вы хотите отображать числа с .00 в конце (например, «50,50», а не «50,5»), вы должны использовать

numer_format($value, 2)

person Leo Chashchin    schedule 23.02.2019

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

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

number_format($NUMBER+0)
person Elyor    schedule 08.01.2018