-2

考虑下面的代码:

float a = 0.7;
if(0.7 > a)
    printf("Hi");
else
    printf("Hello");

// The output will be: Hi

为什么这里的 if 语句返回 true?但是如果我用0.7替换a那么它会返回 false 吗?0.7a大多少?这不会发生在0.5或其他东西上。为什么会这样?

4

1 回答 1

1

0.7 本身不是浮点数,而是双精度数,并且由于它们是具有不同精度的不同数据类型,因此值不一样。在这种情况下,您必须通过在末尾添加“f”来明确告诉 0.7 是浮点数:

    float a = 0.7;
    if(0.7f > a)
        printf("Hi");
    else
        printf("Hello");

    return 0;

或者只是将“a”变量的数据类型更改为双精度:

    double a = 0.7;
    if(0.7 > a)
        printf("Hi");
    else
        printf("Hello");

    return 0;
于 2022-02-24T09:19:56.337 回答