#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
如何将其更改为
答案 0 :(得分:2)
由于您希望在setprecision
使用舍入时进行截断,因此需要手动截断结果:
cout << fixed << setprecision(2) << trunc(100*result)/100;
乘以除以100会保留两位小数。
注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;