好吧,基本上我使用的是setprecision(3),但是这会将最后一个数字四舍五入,例如,如果我们这样做的话 -
double x = 5;
x = (double) x / 3;
cout << fixed << setprecision(3) << x << endl;
它将显示1.667
但是,如果我们用计算器做,它会显示 - 1.666666666 ... 67
所以基本上,我的意思是,是否有机会在文件中输出,只是逗号后面的前三位数,而不是将其四舍五入?
答案 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()
来截断拖尾数字。