如何在逗号后设置3位数

时间:2012-02-22 16:37:54

标签: c++

好吧,基本上我使用的是setprecision(3),但是这会将最后一个数字四舍五入,例如,如果我们这样做的话 -

double x = 5;
x = (double) x / 3;
cout << fixed << setprecision(3) << x << endl;

它将显示1.667

但是,如果我们用计算器做,它会显示 - 1.666666666 ... 67

所以基本上,我的意思是,是否有机会在文件中输出,只是逗号后面的前三位数,而不是将其四舍五入?

3 个答案:

答案 0 :(得分:4)

1.666666666 ... 67舍入到小数点后三位是1.667

如果您只想截断输出,然后将其发送到带有strstream的字符串,请在字符串中搜索“。”的位置。并将字符串截断超出

的3个位置

或者,如果你只是想要总是向下舍入,将结果乘以1000,使用floor()向下舍入然后再除以1000.0。

答案 1 :(得分:0)

强制转换为截断部分:

int main()
{
  double x;
  x=  -100.666666666666666;
  x = static_cast<double> ( static_cast<long>(x * 1000) )/1000;
  cout << x << endl;
}

我们可以使用来自floor(double)的{​​{1}},这是更优选的,但它也会将负数舍入到负面。

答案 2 :(得分:-1)

cout << fixed << setprecision(3) << double(int(x*1000))/1000 << endl;

我们使用int()来截断拖尾数字。