我正在阅读的文本文件包含如下所示的值
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.
}
在我写过输出的评论中,任何不改变值的解决方案
答案 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