number_format() 导致错误“遇到格式不正确的数值”

发布于 2024-11-17 21:27:32 字数 480 浏览 1 评论 0原文

我正在使用 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] [error] [client 127.0.0.1] PHP 注意:在线 /home/tahoang/Desktop/Projects/weatherData/weatherData.php 中遇到格式不正确的数值41

如何解决这个问题吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

眼角的笑意。 2024-11-24 21:27:32

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

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

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

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

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

or

$format = number_format(floatval(0), 2);
桃酥萝莉 2024-11-24 21:27:32

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

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

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);
喵星人汪星人 2024-11-24 21:27:32

进行计算时,请使用

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

如果您想显示末尾带有 .00 的数字(例如“50.50”而不是“50.5”)那么你可以使用

numer_format($value, 2)

When doing calculations, use

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

And if you would like to display numbers with .00 at the end (like "50.50" not "50.5") then you would use

numer_format($value, 2)

口干舌燥 2024-11-24 21:27:32

我用过这个:

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

也许它会对某人有所帮助。

I used this:

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

Maybe it'll help someone out.

不语却知心 2024-11-24 21:27:32

函数将其识别为字符串。

通过加零转换为数字:

number_format($NUMBER+0)

Function is recognizing it as a string.

Convert to number by adding zero:

number_format($NUMBER+0)
微暖i 2024-11-24 21:27:32

number_format() 函数中传递 "0..6" 时出现此错误。

我刚刚将表格的价格列中的 .. 替换为 .

I got this error when passing "0..6" in number_format() function.

I just replaced .. to . in price column of the table.

沧笙踏歌 2024-11-24 21:27:32

我在这个错误上挣扎了很多,这是因为返回类型 float 像这样:

protected function example(): float {
   ...
   return number_format($number, 2);
}

错误不是 $number 而是字符串与“.”的转换。返回由 number_format 生成的字符串时,浮点型中的“,”。

I struggle a lot with this error and it was because a return type float like this:

protected function example(): float {
   ...
   return number_format($number, 2);
}

The error was not the $number but the conversion of string with "." and "," in float when returning the string generated by number_format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文