ofstream outfile("C:\\Users\\Song\\Desktop\\20171106\\final.txt", ios::in | ios::out | ios::binary);
for (int b = 1; b < 257; b++)
{
outfile << y[b] << "";
}
outfile.close();
我的问题是:
数组y内显示8.7391425897412365e19,输出到TXT文件内以后变成了8.73914e-019,想问一下怎样才能控制输出到tXT的精度?
比如:
输出:87391427179357143040.00
for (int b = 1; b < 257; b++)
{
char temp[64];
sprintf(temp, "%lf", y[b]);
outfile <<temp << "";
}
使用setprecision(n)设置小数位数,outfile<< setprecision(6)<<temp<<"";
结合setprecision和fixed,具体你可以百度得到
比如:5.3f
表示无五位有效数字,小数点前两位,小数点后三位
强制转换为float 你这个是double类型的,变为float精度就少了,楼上有几位是输出精度改变,而不是你那个变量的本身改变,所以你的问题是怎么把
变量缩小精度范围。我不会这个问题。。
转化成String类型试一试。
将Y转换为string类型输出则可保持原样不变
将数据转换成float或者double型
之前加一句:
cout.precision(精度);
但这样做有一点注意:之后使用cout时都保持这个精度。
可以使用以下格式来解决上述问题:
cout << fixed << setprecision(精度) << 变量/常量;
另外有个C语言的方法:printf格式化输出
printf("%.2f",var);//输出var并保留两位小数。