【发布时间】:2015-12-02 17:47:15
【问题描述】:
我正在从一个以指数值表示的精度为 7 位的文件中读取数据
4.81591e-007
5.17968e-007
5.03954e-008
-8.30735e-007
虽然我得到的值只有 5 个点的精度
0.000000
0.000001
0.000000
-0.000001
-0.000002
代码如下,是
#include<iostream>
#include<vector>
#include<utility>
#include<algorithm>
#include<map>
#include<cmath>
#include<sstream>
#include<string>
#include<queue>
#include<cstdlib>
#include<cstdio>
#include<fstream>
using namespace std;
int main()
{
FILE *fp2;
fp2=fopen("output","w");
int i=0;
ifstream myFile;
myFile.open("sruthi_DATA_.txt");
vector<long double>numberlist;
long double number;
while(myFile >> number){ //
numberlist.push_back(number);
i++;
}
int j;
for(j=0;j<i;j++)
{
cout.precision(10);
cout<<numberlist[j]<<fixed<<endl;
fprintf(fp2,"%Lf\n",numberlist[j]);
}
fclose(fp);
fclose(fp2);
return 0;
}
【问题讨论】:
-
因为
%Lf字面意思是一个精度高达六点的数字。改用标准%f -
这是使用 C 函数
frpintf()所以添加了C以获得适当的受众。 -
嗯,这是为了写入文件。当我打印到终端时,它给出相同的值。
-
在
fprintf中尝试%Lg或%.20Lg而不是%Lf- 这有帮助吗? -
如果你读的是科学记数法数字但写的是定点数,这是预期的行为。
标签: c++ c file floating-accuracy