如何修复cpp中小数点后2位数的双数?

时间:2016-09-28 19:45:41

标签: c++

同样,

AC = sqrt((AB*AB)+(BC*BC)); 

BD = sqrt((BC*BC)+(CD*CD));

(所有变量都是双重类型)

这里,我希望AC和BD的值固定为小数点后的2位数,然后我想添加AC和BD。现在,如果我(小数点后3位)AC = 4.564和BD = 4.789,添加后的结果是9.351。再次,如果我采取(小数点后2位数)AC = 4.56和BD = 78,那么添加它们后的结果是9.34。现在,如果我打印两个小数点后固定为2位数的结果,则分别显示9.35和9.34。但我希望得到9.34。

2 个答案:

答案 0 :(得分:0)

准确度的两位小数:

  1. 乘以100
  2. 加0.5
  3. 向下舍入到最接近的整数
  4. 除以100
  5. 但是如果你碰巧得到一个整数值,你就不会在小数点后面有#2; 2位数"

答案 1 :(得分:-1)

如果您尝试在小数点后输出2位数的双精度值,则将修饰符用于如下所示的流:

std::cout << std::setprecision (2) << std::fixed << AC;

这将输出具有2位精度的浮点数的定点表示。

此外,您应该查看圆形,细胞和地板功能,并按如下方式使用它们:

ans = round(AC * 100.0)/ 100.0

做你想做的事。您将发现您不能将所有数字表示为小数点后的两位数,因此您进行的任何比较都应该测试目标答案的接近程度+/-小目标值的epsil。

如果您尝试使用为财务计算计算的值,则使用double类型非常危险,因为某些值无法使用有限数量的精度位来精确表示。使用float / double类型执行财务计算时,您将遇到累积错误。