【问题标题】:Rounding a float number to 2 decimals to write it to a text file将浮点数舍入到小数点后 2 位以将其写入文本文件
【发布时间】:2014-10-25 12:40:51
【问题描述】:

我正在做一个学校项目,我必须将一个浮点数写入一个文本文件。 问题是我只想将最多 2 位小数的浮点数写入文件。 我在互联网上搜索了很多,但我只找到了流的“setprecision”功能。

我不能这样做,因为我不想打印它,但我想将它写入一个只有 2 位小数的文件。所以我必须首先将浮点数转换为相同的数字,但只有 2 位小数,然后我将它放入一个字符串(已经包含其他字符)。然后我将该字符串写入输出文件。

我在“ofstream”的描述中发现了一种“精度”方法,但我认为它不适用于我正在尝试做的事情。 (http://www.cplusplus.com/reference/fstream/ofstream/)

有谁知道这样做的功能或这样做的方式吗?

感谢您的帮助!

【问题讨论】:

标签: c++ file decimal precision


【解决方案1】:

我不能这样做,因为我不想打印它,但我想将它写入一个只有 2 位小数的文件。

ostream 不仅仅用于打印。您可以使用 ofstream 做同样的事情,就像使用 cout 一样。

std::ofstream fout("out.txt");

fout << std::setprecision(2) << 1.23456;

该函数生成一个字符串,其中包含价格、文章名称和我想要的其余信息。该函数返回该字符串,然后我将该字符串写入输出文件

您可以通过将 ostream 引用传递给函数而不是返回字符串来编写输出。您也可以让函数在将浮点数写入字符串时进行格式化。 Ostream 不仅仅用于打印或写入文件:

std::stringstream ss;

ss << std::setprecision(2) << 1.23456;

std::string s = ss.str();

【讨论】:

  • 谢谢 bames53!这行得通。我尝试了类似的方法,但不知道字符串流的“str”方法:)
  • 如果您不知道浮点数中小数点左边有多少位,std::setprecision(log10f(x)+3) 其中 x 保存您的数字。
猜你喜欢
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多