牵风 发表于 2021-11-9 16:23:56

为什么输入353.88然后就成了353.880005

#include <stdio.h>

int main() {
        float grade;
        float max=grade;
        int i;
        while(scanf("%f",&grade)!=EOF&&grade>0) {
                if(max<grade)
                        max=grade;
        }
        printf("%f",max);

        return 0;
}

村里小黑 发表于 2021-11-9 16:39:42

float类型失真了

小甲鱼 发表于 2021-11-9 16:56:34

这是由于浮点数的存储并非 1 个位存储 1 个数,它是经过计算并以相对接近的方式存储,所以存在一定的误差

感兴趣的可以参考一下这篇文章,里面有介绍系统存储浮点数的方式 -> https://fishc.com.cn/thread-67214-1-1.html
页: [1]
查看完整版本: 为什么输入353.88然后就成了353.880005