小数点四舍五入

时间:2017-12-30 14:02:24

标签: c++

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  double a,b,result;
  a = 2;b = 3;
  result = a / b;
  cout << fixed << setprecision(2) << result;

}

我的IDE中此代码的输出是:

0.67

我希望输出为

0.66

如何将其更改为

3 个答案:

答案 0 :(得分:2)

由于您希望在setprecision使用舍入时进行截断,因此需要手动截断结果:

cout << fixed << setprecision(2) << trunc(100*result)/100;

乘以除以100会保留两位小数。

Demo.

注1:您必须注意不要传递接近double范围顶部的数字,以避免在乘法时出现溢出。

注2:您可以通过乘以除以pow(10,n)来概括此方法,其中n是您希望保留的小数位数。

答案 1 :(得分:1)

2/3是0.666666666 ......,确实接近0.67而不是0.66。因此,如果你想要后者,你必须实际改变结果。您可以使用一个简单的函数来执行此操作:

double truncate(double val, int precision)
{
  double shift = std::pow(10.0, precision);
  return std::trunc(val * shift) / shift;
}

答案 2 :(得分:0)

您可以尝试使用以下内容进行截断:

result = (int)( 100 * a / b ) / 100.0;