C的浮点数和双精度?

时间:2018-02-19 13:08:14

标签: c floating-point double precision

我最近在网上找到了这个C代码。

#include <stdio.h>

int main() {
    double x = 3.1;
    float y = 3.1;

    if(x==y)
        printf("yes");
    else
        printf("No");
}

输出

我添加了一些printf来调查

#include <stdio.h>

int main() {
    double x = 3.1;
    float y = 3.1;

    if(x==y)
        printf("yes");
    else
        printf("No");

    printf("%.10f\n", y);
    printf("%.10f\n", x);

    return 0;
}

输出为

3.0999999046
3.1000000000

为什么会这样?为什么float变量在打印到10位小数时会失去其精度?

0 个答案:

没有答案