我有这个问题:
我们声称使用带有浮点数的相等测试是不安全的,因为算术运算引入了舍入误差,这意味着两个应该相等的数字不是。
对于这个程序,你应该选择一个数字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);
}
}
}
这是对的吗?
感谢。
答案 0 :(得分:0)
你的程序错了。它应以x=1
开头,而不是x=0
。
但除此之外,你应该选择两个例子(一个已经由程序打印,另一个没有)并手动计算。只需使用笔和纸以及IEEE 754-1985规则。然后打印等式的两边,并将它们与手工计算结果进行比较。