首页 > 解决方案 > 从 c 中的文本文件读取浮点数时的值错误

问题描述

我正在阅读的文本文件包含如下值

125602365 119653955 126374444 124463807 127312438 128395899

和下面的代码来阅读它。

if(!(pvtcheck(0)))
  {
     fscanf(fp,"%f",&deltime);
     printf("\ndeltime0=%f\n",deltime);    ///Actual value is 125602365, but i am getting 125602368.
  }

  if(!(pvtcheck(1)))
  {
      fscanf(fp,"\t%f",&deltime); 
      printf("\ndeltime1=%f\n",deltime);///Actual value is 119653955, but i am getting 119653952.
  }
  /// same for pvtcheck(2),pvtcheck(3),pvtcheck(4)
  if(!(pvtcheck(5)))
  {
      fscanf(fp,"\t%f",&deltime);
       printf("\ndeltime5=%f\n",deltime); ///Actual value is 128395899, but i am getting 128395896.
  }

在我写的评论中,任何不改变值的解决方案

标签: cfilescanf

解决方案


您需要使用double类型代替float,并使用%lf格式说明符scanf代替%f

double deltime;

fscanf(fp, "%lf", &deltime);
printf("\ndeltime0=%lf\n", deltime);
fscanf(fp, "\t%lf", &deltime);
printf("\ndeltime1=%f\n", deltime);
...

顺便说一句:因为printf您可以使用其中一个,%f或者%lf它们都具有相同的含义。

另请阅读此 SO 文章


推荐阅读