我有这个问题:
我们声称对浮点数使用相等测试是不安全的,因为算术运算会引入舍入误差,这意味着两个本应相等的数字不相等。
对于此程序,您应该选择一个数字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);
}
}
}
它是否正确?
谢谢。
最佳答案
您的程序是错误的。它应以x=1
而不是x=0
开头。
但是除此之外,您还应该选择两个示例(一个已经由程序打印出来,另一个没有打印出来)并手动计算。仅使用笔和纸以及IEEE 754-1985规则。然后打印等式的两边,并将其与手工计算的结果进行比较。
关于c - C帮助!浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19666437/