c - 在 C 中初始化为零的浮点变量的相等性

标签 c floating-point

我理解由于值的存储方式,不应对 float 执行相等运算,而应执行阈值比较。但是,当值设置为常数值(比如 0)时使用相等是否安全?

void test() {
   double max = 0.0;

   do {
       if (condition) {
           if (max != 0.0) { // Is this safe
               // myval is always a large positive number
               max = min(myval, max);
           } else {
               max = myval;
           }
       }
   } while (my_condition);

   return myval;
}

我可以在 StackOverflow 上看到几个类似的问题。但我的问题特定于分配了常量零的变量(不是操作的结果)。

最佳答案

0.0IEEE-754 中有精确表示,因此如果两个变量设置为 0.0,则它们的比较结果应始终为 true。但是,如果在您的代码中 max 确实总是 0.0,您最好删除 if block ,因为它永远不会执行。

关于c - 在 C 中初始化为零的浮点变量的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29492121/

相关文章:

我可以将整个数组从 *void 重新转换为 *int 吗?

c - C 中这两种 typedef 样式之间有什么区别?

c - 将数组指针传递给要在 C 中的 printf` 中使用的函数

assembly - MASM程序集:存储浮点

C:使用 float 的 while 循环永远不会终止

python - 更改嵌套列表中的 float

c++ - 整数值的缩放(来自 float )

c - 在段错误期间是否访问了物理内存的其他部分?

c - 是否有一种有效且安全的方法来反转数组中的所有元素?

c - 是否有任何数字可以对 float 进行快速模计算?