使用PHP number_format()获得奇怪的除法错误

时间:2010-09-26 18:04:27

标签: php math number-formatting

我的脚本通过将另外两个数字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

5 个答案:

答案 0 :(得分:2)

仅在漂亮打印号码时才应使用

number_format。它的返回值不应该像你那样用于计算。

示例:

如果$A = 1045; 如果您将number_format($A,2)视为一个数字1,045.00作为逗号,则1,045.0011/2,其余字符将被忽略,0.5为{{} 1}}你得到的。

答案 1 :(得分:2)

你想要round(A, 2),而不是number_format()用于字符串表示(因此命名为“format”)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

number_format将它变成一个数字之间用逗号组成的字符串,逗号会让除数混淆为认为是基于你的语言环境的分数。