PHP 数学差异
PHP Math Discrepancy
这是一些简单的数学运算,但加起来并不完全正确。
990 / 7670 = 0.12907431
假设我想收取 1%,我从 1000 开始。
同样的数学公式适用于上面 (1000 - 1% = 990)
首先:
990 / 7670 = 0.12907431
然后用我原来的号码(+1%):
1000 / 0.12907431 = 7747.4750785
最后为了抵消1000减少的1%,我把7670增加了1%:
7670 * 1.01 = 7746.7
.
为什么最后两个值有 0.01% 的差异? PHP 小数处理不好吗?
我看不出我在哪里失去了它,我觉得数学是正确的。我知道 PHP 有时会出现舍入问题,想知道它是否就这么简单,或者我是否错过了 obv 数学错误。
990 + 1% 不等于 1000。它等于 999.9。
990 * 1.01 = 999.9
话虽这么说 - 你永远不能依赖像这样的不同浮点计算来评估完全正确答案。 PHP,与其他语言一样,没有 'rounding issues',而是使用与实数行为方式不同的浮点数。
这是一些简单的数学运算,但加起来并不完全正确。
990 / 7670 = 0.12907431
假设我想收取 1%,我从 1000 开始。
同样的数学公式适用于上面 (1000 - 1% = 990)
首先:
990 / 7670 = 0.12907431
然后用我原来的号码(+1%):
1000 / 0.12907431 = 7747.4750785
最后为了抵消1000减少的1%,我把7670增加了1%:
7670 * 1.01 = 7746.7
.
为什么最后两个值有 0.01% 的差异? PHP 小数处理不好吗?
我看不出我在哪里失去了它,我觉得数学是正确的。我知道 PHP 有时会出现舍入问题,想知道它是否就这么简单,或者我是否错过了 obv 数学错误。
990 + 1% 不等于 1000。它等于 999.9。
990 * 1.01 = 999.9
话虽这么说 - 你永远不能依赖像这样的不同浮点计算来评估完全正确答案。 PHP,与其他语言一样,没有 'rounding issues',而是使用与实数行为方式不同的浮点数。