C帮助!浮点数

时间:2013-10-29 18:33:00

标签: c floating-point floating

我有这个问题:

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

对于这个程序,你应该选择一个数字N,并编写一个程序来显示哪个整数x在1和1000之间相等 (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); 
    }
 }
}

这是对的吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你的程序错了。它应以x=1开头,而不是x=0

但除此之外,你应该选择两个例子(一个已经由程序打印,另一个没有)并手动计算。只需使用笔和纸以及IEEE 754-1985规则。然后打印等式的两边,并将它们与手工计算结果进行比较。