【问题标题】:number_format() causes error "A non well formed numeric value encountered"number_format() 导致错误“遇到格式不正确的数值”
【发布时间】:2011-09-26 09:51:03
【问题描述】:

我正在使用 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

如何解决这个问题?

【问题讨论】:

  • @zerkms: PHP Notice: A non well formed numeric value encountered
  • 你试过number_format(0.0, 2)吗?
  • 如果不告诉我们您遇到了什么错误,我们将无法为您提供帮助。
  • @eyazici:是的,出现了同样的错误。
  • @yes123:先生,我的 LAMP 堆栈是最新的。

标签: php number-formatting


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我用过这个:

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

      也许它会帮助别人。

      【讨论】:

        【解决方案4】:

        函数将其识别为字符串。

        加零转换为数字:

        number_format($NUMBER+0)
        

        【讨论】:

          【解决方案5】:

          计算的时候用

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

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

          numer_format($value, 2)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-11-17
            • 1970-01-01
            • 2017-09-13
            • 2014-09-18
            相关资源
            最近更新 更多