2

電卓で特定の値 X を計算していますが、計算を行う順序によって異なる答えが得られます。なぜそうなのかについて、誰かが私に教えてもらえますか?

ケース 1: X = (730 * 4800)/1024 = 3421

ケース 2: X = 730 * (4800/1024) = 2920

  • 実際には CASE 1 の方が望ましい結果に近いです。
  • CASE 2 では精度が落ちているような…?
4

2 に答える 2

5

どちらの場合も、通常の (浮動小数点) 除算の代わりに整数除算が実行されました。

整数除算は、小数部分(剰余)を切り捨てる除算です。

たとえば、CASE 2 では、(4800 / 1024) に対して整数除算が実行され、結果は (4.6875 ではなく) 4 でした。そこから乗算すると、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
于 2013-07-19T21:28:00.587 に答える
0

除算を計算すると、浮動小数点の精度が失われることがあります。そのため、最初に除算を計算すると、多少の誤差が生じます。除算後の結果を乗算すると、実際にはエラーが乗算されます。最初に乗算を計算するので、何も失うことはありません。その後、分割されるため、エラーは最小限に抑えられます。

このようなことを試してください1/(1/10000)。エラーが発生すると確信していZeroDivisionますが、実際にはそうでは10000ありませんinfinity

于 2013-07-19T22:03:36.557 に答える