c++ - 浮点与浮点文字比较的奇怪输出

标签 c++ c floating-point double-precision

float f = 0.7;
if( f == 0.7 )
    printf("equal");
else
    printf("not equal");

为什么输出不相等

为什么会发生这种情况?

最佳答案

发生这种情况是因为在您的声明中

  if(f == 0.7)

0.7 被视为 double 。尝试 0.7f 以确保该值被视为 float :

  if(f == 0.7f)

但正如 Michael 在下面的评论中建议的那样,您永远不应该测试浮点值的精确相等性。

关于c++ - 浮点与浮点文字比较的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282407/

相关文章:

c - Valgrind 提示调用 fgets

c# - 检查浮点变量是否为整数的最可靠方法是什么?

c++ - VS2013 : compiler bug with float and/EHa +/fp:strict?

c++ - VS 2015 "Build Dependencies -> Build Customization"总是触发 PreBuild 和 PostBuild

c++ - 与包含的类型相比,C++ 中的数组如何对齐?

C:在调车场实现中没有强制转换的指针整数

c - 二维数组是双指针吗?

.net - 双入.net

C++,实例化 std::vector 时性能不佳

C++ 麻烦的析构函数