【问题标题】:Why is the output showing as "okNOT OK"? It should have shown "okOK"? Please explain [duplicate]为什么输出显示为“okNOT OK”?它应该显示“okOK”?请解释[重复]
【发布时间】:2020-12-17 08:39:34
【问题描述】:

对于浮点值,输出为“okNOT OK”,应该显示“okOK”。但是对于其他数据类型,它工作正常。为什么会这样?

#include<stdio.h>
int main()
{
    float a=0.5, b=0.7;
    if(a==0.5)
    printf("ok");
    else
    printf("not ok");
    if(b==0.7)
    printf("OK");
    else
    printf("NOT OK");
    return 0;
}

【问题讨论】:

  • 不建议对浮点值进行相等比较。使用公差。

标签: c output


【解决方案1】:

默认情况下,十进制值为double,这意味着您将0.7f (float) 与0.7 (double) 进行比较。这些值是不同的,因为double 使用更多位来保存有关数字本身的数据。要解决您的问题,请将您的 if 语句更改为:

if(a == 0.5f)
    ...
if(b == 0.7f)
    ...

这样您就可以将float a, b 与对应的float 值进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-03
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多