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

Posted

技术标签:

【中文标题】使用 PHP number_format() 得到一个奇怪的除法错误【英文标题】:getting an odd division error with PHP number_format() 【发布时间】:2010-09-26 18:04:27 【问题描述】:

我的脚本通过将另外两个数字 A 除以 B 来计算数字 X。

X=A/B

当我在计算 X 之前在 A 上使用 number_format(A,2) 时,我得到一个非常奇数的数字。实际数字:

1,045.00 / 5 = 0.2

但是如果我在除法之前不在 A 上使用 number_format,我会得到正确的答案。 number_format 是否以某种方式使 A 变为非数字?

1045 / 5 = 209

【问题讨论】:

【参考方案1】:

number_format 只能在漂亮打印数字时使用。它的返回值不应该像你那样用于计算。

例子:

如果$A = 1045; 那么number_format($A,2) 将是1,045.00 现在如果您将1,045.00 视为一个数字,它将是1 作为逗号,剩余的字符将被忽略,1/2 是您得到的0.5

【讨论】:

【参考方案2】:

您需要round(A, 2),而不是用于字符串表示的number_format()(因此命名为“格式”)。

【讨论】:

【参考方案3】:

文档显示 number_format 返回一个字符串。在进行数学运算之前,您是否尝试过将 number_format() 的结果转换为数字类型?

【讨论】:

【参考方案4】:

我也有类似的问题。如果我们使用数字格式的 dec_point 和 crowd_separator 参数可能会更好。你可以使用 number_format($number, 2, '.', '');这将有助于删除你的千位分隔符

【讨论】:

【参考方案5】:

【讨论】:

以上是关于使用 PHP number_format() 得到一个奇怪的除法错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP 警告:number_format() 期望参数 1 为浮点数

php number_format 函数将 11223344556677 更改为 1122334455/66/77

php 的 number_format使用

PHP 使用 number_format 并正确显示小数点

PHP函数number_format()

php 取消格式化使用number_format()格式化的数字。