如何在C ++中将double值舍入到2位小数?

时间:2017-10-05 08:13:37

标签: c++

假设我有一些计算如下:

double a = 99.44, result;

result = 99.44 / 100 * 99.5;

结果中存储的值为98.9428。如何将值四舍五入为98.94并存入“结果”?

setprecision方法只能在cout期间对值进行舍入,但我希望将存储的值舍入为进一步计算。

2 个答案:

答案 0 :(得分:3)

您可以使用以下算法:

  • 乘以100
  • 舍入到最接近的整数
  • 除以100

此算法存在大值非常接近最大值的问题,因为乘法可能会溢出。

另一种方法是像使用std::cout一样使用流操作符,但是将其转换为字符串,然后将该字符串转换回浮点数。这要慢得多,但上面没有提到任何警告。

答案 1 :(得分:2)

你做不到。浮点变量没有小数位:它们有二进制位,与小数位无法比较。

如果你想要小数位,你必须使用十进制基数,例如格式化输出时。