如何将双精度转换为两位小数?

时间:2014-04-20 20:52:31

标签: c++ visual-studio-2012

我正在读取从文件到双精度值的值,这是一个双精度值(625.20)

双重进入:625.20000000000005

我已经尝试了所有东西(包括我在StackExchange上能找到的所有内容),以便在百分之后丢弃数字,但无济于事。

我尝试过使用地板,我尝试乘以100然后再转换为int然后再回到double,似乎没什么用。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

625.20不能表示为double - 因此选择最接近的可表示值,大约为625.20000000000005。

基本经验法则:

  • 如果您对这些错误没问题,请使用浮动,然后选择您选择的输出格式
  • 如果您需要小数点后的固定精度,请使用乘法因子为10 ^ n的int或内置构造(如果可用)

答案 1 :(得分:1)

您可以使用小数精度来格式化输出操作中的浮点值。

#include <iostream>
#include <string>
#include <iomanip>

int main()
{
  double f =3.14159;
  std::cout << std::setprecision(4) << f << '\n';
}

结果:3.142