从c中的文本文件中读取浮点数时的值错误

时间:2018-06-19 06:00:29

标签: c file scanf

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

  

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.
  }

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

1 个答案:

答案 0 :(得分:2)

您需要使用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,它们都具有相同的含义。

另请阅读this SO article