假设我有一些计算如下:
double a = 99.44, result;
result = 99.44 / 100 * 99.5;
结果中存储的值为98.9428。如何将值四舍五入为98.94并存入“结果”?
setprecision方法只能在cout期间对值进行舍入,但我希望将存储的值舍入为进一步计算。
答案 0 :(得分:3)
您可以使用以下算法:
此算法存在大值非常接近最大值的问题,因为乘法可能会溢出。
另一种方法是像使用std::cout
一样使用流操作符,但是将其转换为字符串,然后将该字符串转换回浮点数。这要慢得多,但上面没有提到任何警告。
答案 1 :(得分:2)
你做不到。浮点变量没有小数位:它们有二进制位,与小数位无法比较。
如果你想要小数位,你必须使用十进制基数,例如格式化输出时。