【发布时间】:2018-10-01 03:57:16
【问题描述】:
我想使用 iomanip 打印以筛选一些小数点后最多 4 位的数字。
我了解到,在默认模式下,setprecision 不仅计算小数点后的数字,还计算整数部分中的数字。这段代码
#include <iostream>
#include <iomanip>
int main () {
double numbers[] = {3.141516, 1.01, 200.78901, 0.12345};
int len = sizeof(numbers) / sizeof(numbers[0]);
std::cout << std::setprecision(4);
for (int i = 0; i < len; ++i) {
std::cout << numbers[i] << '\n';
}
return 0;
}
输出:
3.142
1.01
200.8
0.1235
但我想要的是:(小数点后最多 4 位不带尾随零)
3.1415
1.01
200.789
0.1235
iomanip 有能力做到这一点吗?不使用其他技巧(如round)?
编辑
好像我说得不够清楚。我的问题是iomanip 具体
我只想知道iomanip 是否能够做我所描述的事情,因为iomanip 据说是输入/输出操纵器的标准库。发布的问题是
iomanip能做到这一点吗?
更像是“是否支持”而不是“给我任何解决方案”。
我再次搜索了它,查找了 iomanip 参考资料,希望找到一种简洁紧凑的方式来格式化最多为 n 数字的浮点数,尽可能少地使用不必要的库。
而且似乎没有标准的方法来实现这一点。
【问题讨论】:
-
在输出每个值之前需要设置精度。它不是适用于每个后续值的一次性设置。
-
实际上,它确实适用于每个后续值。
200.78901确实变成了200.8和0.12345变成了0.1235
标签: c++