number_format 返回错误的值?

Posted

技术标签:

【中文标题】number_format 返回错误的值?【英文标题】:number_format return the wrong value? 【发布时间】:2014-03-17 14:20:40 【问题描述】:

这是我的代码:

$subTotal = number_format($subTotal, 2);

在 $subTotal 中,我有一个像 1,233.00 这样的值作为字符串。返回值为 1.00,这当然是错误的。所以我尝试了其他方法:

$subTotal = number_format($subTotal, 2, '.', ',');

结果还是一样。如何使用 , 作为千位分隔符?

谢谢!

【问题讨论】:

number_format() 适用于数字数据类型,而不适用于格式化字符串....如果您向 number_format() 提供格式化字符串,那么它将使用普通的 php 转换规则转换为数字(如在文档中定义),这意味着逗号后面的任何内容都将被忽略 【参考方案1】:

在调用number_format()之前去掉逗号

$subTotal = number_format(str_replace(',', '', $subTotal), 2);

【讨论】:

因为 PHP 将该值视为字符串。但是 number_format() 需要一个整数。因此,它将该值转换为整数。但这意味着在它找到的第一个非数字处截断数字,即逗号。

以上是关于number_format 返回错误的值?的主要内容,如果未能解决你的问题,请参考以下文章

number_format 中的 PHP 错误

使用 PHP number_format() 得到一个奇怪的除法错误

在 PHP 中处理货币 - 小数位和 number_format()

PHP开发最容易犯的错误

php number_format() 的问题

php中带有大数字的numberformat错误