C++ 中怎样控制数据输出精度?

代码很简单如下:

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并保留两位小数。