帮助! float

标签 c floating-point floating

我有这个问题:

我们声称对 float 使用相等测试是不安全的,因为算术运算会引入舍入错误,这意味着两个应该相等的数字实际上并不相等。

对于这个程序,您应该选择一个数字 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 规则。然后打印等式两边并将它们与您手工计算的结果进行比较。

关于帮助! float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666437/

相关文章:

c++ - 当你不遵循 argv 和 argc 的做法时会发生什么

haskell - 四舍五入到最接近的整数奇怪的结果

将 double 值转换为 uint_8 类型数组

CSS - Safari 中的问题

Python 列表使用随机元素扩展,保持边界/原始

c - 链接器找不到库

c - Linux RCU 和双向链表

python - 恢复标准化操作时的精度问题

Python:np.vectorize 返回 "float"

c - 打印 C 字符串时出现不需要的字符