2013-07-19 35 views
2

我计算用计算器计算某个值X,和我做计算得出不同的答案的顺序。请有人赐教,至于为什么是这样的情况?相同的公式,但不同的答案

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

CASE 2: X = 730 *(一千〇二十四分之四千八)= 2920

  • CASE 1是实际上更接近期望的结果。
  • 似乎是在案例2中损失精度...?
+0

这是关系到一个特定的编程语言? –

+0

我在编程时遇到了这个... – TheLoneJoker

回答

5

在执行代替正常(浮点)除法的整数除法这两种情况。

整数除法是小数部分(余数)被丢弃的除法。

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

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

迫使你需要改变你的计算,以

CASE 1一个浮点除法:

X = (730 * 4800)/1024.0 = 3421.875 

案例2:

X = 730 * (4800/1024.0) = 3421.875 
0

当计算事业部,有些时候我们失去了浮动点精度。所以当你首先计算分区时,会出现一些错误。现在当分割后的结果相乘时,你实际上乘以错误。在那里你首先计算乘法,所以我们不会失去任何东西。然后它被分开,所以错误仍然很小。

尝试这样的事情1/(1/10000)。我确信它会增加ZeroDivision错误,但它实际上是10000而不是infinity

相关问题