c - 评估 C 中的关系运算符

标签 c operators relational

下面是一段C代码

float k=0.6;

if(k==0.6)
  printf("yes they are equal");
else
  printf("no they are not equal");

上面的代码给出输出“不,它们不相等”。我正在使用 Ubuntu 12.04 gcc 4.4

我很惊讶并调试了程序。 答案是否定的,因为K的值不等于0.6。我在 gdb 中单步执行该程序,发现 k 的值为 0.600000024。现在我的问题是为什么将 0.600000024 分配给 k 而不是 0.6。当我分配 0.7 时,k 的值为 0.69999998。 为什么会出现这种情况?

最佳答案

正确。如果您在 C 中使用浮点值,则必须使用设定的差异。

你可以使用

DBL_EPSILON of the Header float.h
if ((k - 0.6) < DBL_EPSILON){ ... }

关于c - 评估 C 中的关系运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495631/

相关文章:

c - 以参数 0 作为标志打开系统调用

c - 是否有任何工具可以从一组 C 文件中提取所有变量(公共(public)变量和静态变量)?

c - 这是 + 运算符在 C 中的实现方式吗?

c++ - 奇怪的逗号运算符行为

python - StringRelatedField 不起作用,如官方教程所示

mysql - 在 MySQL 中连接表 A 的行和表 B 的列

php - MySQL/PHP 如何设置和填充关系数据库以一次插入几行?

c++ - 更改组合框选择的 DateTimePicker 样式失败

在 C 中从 char * 转换为 char[31]

c++ - catch 在此 C++ 代码中的用法是什么