number_format()导致错误“遇到一个非常好的数值”

时间:2011-07-01 00:11:25

标签: php number-formatting

我使用number_format将浮点数舍入为2位小数。问题是我的一些输入开头没有超过2位小数。所以代码:

number_format($value, 2)

如果它没有足够的十进制数字,而不是和平地添加0,它会在Apache日志中引发错误,这是不可取的。

因此number_format(2.1, 2)number_format(0, 2)会在Apache日志中引发错误。

  

[Thu Jun 30 17:18:04 2011] [错误] [client 127.0.0.1] PHP注意:在/home/tahoang/Desktop/Projects/weatherData/weatherData.php上遇到一个非常好的数值41

如何解决这个问题?

5 个答案:

答案 0 :(得分:42)

尝试将number_format()的第一个参数类型转换为float:

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

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

答案 1 :(得分:6)

尝试替换小数点,然后转换为浮动。

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);

答案 2 :(得分:0)

我用过这个:

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

也许它会帮助别人。

答案 3 :(得分:0)

函数将其识别为字符串。

通过添加零来转换为数字:

number_format($NUMBER+0)

答案 4 :(得分:0)

进行计算时,使用

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

如果您想显示以.00结尾的数字(例如“ 50.50”而不是“ 50.5”),则可以使用

numer_format($value, 2)