首页 > 解决方案 > 无法掌握 fscanf 在我的程序中读取浮点数的方式

问题描述

这将是我阅读的部分

do {
    res=0;
    res += fscanf(in , "%50s",recs[n].city); 
    res += fscanf(in , "%d.%d.%d ", &recs[n].d.d , &recs[n].d.m , &recs[n].d.y);
    res += fscanf(in , "%f", &recs[n].t );
    recs = realloc(recs, (n+2)*68);
    if(!recs){
        printf("Error for second recs");
        return 0;
    }
    n++;
        }while(res == 5);

我的输入文件:

Germany 8.01.2020 54.24
Romania 1.2.2019 34.55
Banat 5.1.1999 41.66
Region 4.5.2023 51.71
Idk 12.11.1967 91.981

我的输出:

Germany 8 1 2020 54.240002 
Romania 1 2 2019 34.549999 
Banat 5 1 1999 41.660000 
Region 4 5 2023 51.709999 
Idk 12 11 1967 91.981003  

所以基本上我的问题是为什么 fscanf 读取 51.709999 而不是 51.71 例如。

标签: c

解决方案


最后,我的问题不是理解背后的浮点数学。所以遇到这个问题的任何人都应该对此有所了解,或者简单地打印浮点数的第一个小数。


推荐阅读