相同的方程但不同的答案

时间:2013-07-19 21:25:02

标签: math computer-science calculator

我在计算器上计算某个值X,并且我进行计算的顺序产生不同的答案。有人可以赐教,至于为什么会这样吗?

案例1: X =(730 * 4800)/ 1024 = 3421

案例2: X = 730 *(4800/1024)= 2920

  • CASE 1实际上更接近理想的结果。
  • CASE 2中的准确性似乎有所下降......?

2 个答案:

答案 0 :(得分:5)

在这两种情况下,都执行整数除法而不是正常(浮点)除法。

  

整数除法是除法,其中小数部分(余数)被丢弃。

例如,在案例2中,对(4800/1024)执行整数除法,结果为4(而不是4.6875)。从那里乘法导致730 * 4 = 2920。

我不确定您使用的是哪个计算器,但通常当您想要避免整数除法时,您可以使用浮点数。在您的情况下1024.0。现在,如果这是特定编程语言的一部分,您可能必须使用其他表示法,例如1024.0f(float)1024

要强制浮点除法,您需要将计算更改为

案例1:

X = (730 * 4800)/1024.0 = 3421.875

案例2:

X = 730 * (4800/1024.0) = 3421.875

答案 1 :(得分:0)

计算除法时,有时会失去浮点精度。因此,当您首先计算除法时,会出现一些错误。现在,当除法后乘以结果时,实际上是乘以误差。你首先计算乘法,所以我们不会丢失任何东西。然后它被分割,所以错误仍然很小。

尝试类似1/(1/10000)的内容。我确信它会引发ZeroDivision错误,但实际上10000不是infinity