我使用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
如何解决这个问题?
答案 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)