以下代码将打印a和b的值:
double a = 3.0, b=1231231231233.0123456;
cout.setf(std::ios::fixed);
cout.unsetf(std::ios::scientific);
cout << a << endl << b << endl
输出结果为:
3.000000
1231231231233.012451
您可以看到a已经输出固定的6位小数。 但我希望输出像这样:
3
1231231231233.012451
如何只设置一次标志,并输出上述结果。
答案 0 :(得分:0)
流在double之后插入0
,因为流的浮点值输出的默认精度是6.不幸的是,没有直接的方法来检查double是否代表整数(所以你可以然后只打印整体部分)。但可以做的是将值转换为整数。
std::cout << static_cast<int>(a);
答案 1 :(得分:0)
浮点数的默认格式不支持所请求的格式。您可以使用基本上三种设置:
std::fixed
将在小数点后使用precision()
位数。std::scientific
将使用带有precision()
数字的科学记数法。std::defaultfloat
将选择两种形式中较短的一种。(还有std::hexfloat
,但只是格式化一个方便机器可读的形式的数字。
你可以做的是创建你自己的std::num_put<char>
facet,它将值格式化为本地缓冲区,使用std::fixed
格式化条带,在发送值之前跟踪零位数之一。