我在计算器上计算某个值X,并且我进行计算的顺序产生不同的答案。有人可以赐教,至于为什么会这样吗?
案例1: X =(730 * 4800)/ 1024 = 3421
案例2: X = 730 *(4800/1024)= 2920
答案 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
。