Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

number_format() causes error "A non well formed numeric value encountered"

Tags:

I am using number_format to round floats to only 2 decimal digits. The problem is that some of my inputs don't have more than 2 decimals digits to begin with. So the code:

number_format($value, 2) 

Instead of peacefully adding 0 in case it doesn't have enough decimal digits, it raises errors inside Apache log and that's not desirable.

So number_format(2.1, 2) or number_format(0, 2) will raise error in Apache log.

[Thu Jun 30 17:18:04 2011] [error] [client 127.0.0.1] PHP Notice: A non well formed numeric value encountered in /home/tahoang/Desktop/Projects/weatherData/weatherData.php on line 41

How to fix this?

like image 936
Tu Hoang Avatar asked Jul 01 '11 00:07

Tu Hoang


2 Answers

Try type casting first parameter of number_format() to float:

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

or

$format = number_format(floatval(0), 2); 
like image 125
Emre Yazici Avatar answered Oct 02 '22 23:10

Emre Yazici


Try to replace decimal point and after that cast to float.

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

Without replacing:

var_dump((float)number_format(floatval("20,5"), 2, ".", "")); result: float(20); var_dump((float)number_format((float) "20,5", 2, ".", "")); result: float(20); 
like image 44
user2659841 Avatar answered Oct 03 '22 01:10

user2659841