使用fstream设置精度以输出文件 - 格式为double

时间:2016-01-27 05:00:48

标签: c++ double precision

我找不到如何使用已打开的fstream将格式化的双打输出到文本文件的答案。目前我的代码是这样做的:

int writeToFile (fstream& f, product_record& p)
{
   if (!f){
      cout << "out file failed!!error" << endl;
      return -1;
   } else {

      f << p.idnumber << endl;
      f << p.name << endl;
      f << p.price << endl;
      f << p.number << endl;
      f << p.tax << endl;
      f << p.sANDh << endl;
      f << p.total << endl;
      f << intArrToString( p.stations ) << endl;

   }
}

其中p是名为product_record的结构,而price,tax,sANDh和total都是 double * 我尝试过f << setprecision(4) << p.price << endl;,但这不起作用。如何格式化此double以具有两位小数的精度。像这样"#.00"。如何使用特定的fstream实现这一目标?

另外,fyi,总体任务是简单地读取txt文件,将数据存储在结构中,将结构添加到向量,然后从结构中读取以打印到输出文件。输入文件已经具有格式化为10.00,2.00等的双精度(2位小数)

1 个答案:

答案 0 :(得分:5)

尝试使用

f << fixed << setprecision(2) << endl;

set precision设置有效位数,而不是小数位数。例如

cout << setprecision(3) << 12.3456 << endl;

将输出12.3
首先以固定的方式发送,因此您可以从固定位置(小数位)设置精度,而不是从浮点值的第一个数字设置。