-3

我有这个问题:

我们声称对浮点数使用相等性测试是不安全的,因为算术运算会引入舍入误差,这意味着应该相等的两个数字不相等。

对于这个程序,你应该选择一个数字 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

但除此之外,您应该选择两个示例(一个已由程序打印,一个尚未打印)并手动计算它们。只需纸笔和 IEEE 754-1985 规则。然后打印等式的两边并将它们与您的手动计算结果进行比较。

于 2013-10-31T01:49:50.790 回答