-3

この質問があります:

浮動小数点数で等値テストを使用するのは安全ではないと主張します。これは、算術演算によって丸め誤差が発生し、等しいはずの 2 つの数値が等しくないことを意味するためです。

このプログラムでは、数値 N を選択し、1 から 1000 までの整数 x のどれに対して (x+1)/N = (x/N) + (1/N) が成り立たないかを示すプログラムを作成する必要があります。

    #include <stdio.h>

int main () {
int x;
float N = 50;

for (x=0; x<1001; x++) {
  if ((x+1)/N != (x/N) + (1/N)) 
    {
     printf("%i\n",x); 
    }
 }
}

これは正しいです?

ありがとう。

4

1 に答える 1

0

あなたのプログラムは間違っています。x=1ではなく で始まる必要がありx=0ます。

しかし、それに加えて、2 つの例 (プログラムによって印刷されたものと印刷されていないもの) を選び、それらを手で計算する必要があります。ペンと紙と IEEE 754-1985 ルールだけで。次に、方程式の両辺を印刷し、手で計算した結果と比較します。

于 2013-10-31T01:49:50.790 に答える