我知道如何像这样将四舍五入的数字打印成 N 位小数:
using namespace std;
cout << setprecision(N) << fixed;
float k = 1.23441;
cout << k;
让我们以 N = 2 为例。
这将输出 1.23,这很好,但是如果 k 是 1.0012,它将输出 1.00,我希望它输出 1。如果 k 是 1.1045,它将输出 1.10,我希望它输出 1.1,所以我想四舍五入到 2 位小数并删除不必要的零。
我该怎么做?
最佳答案
其实问题不在于setprecision
,而是fixed
。使用 fixed
,您明确要求拥有固定数量的数字!
如果您使用 setprecision
而不使用 fixed
,它将完全按照您的要求执行:
#include <iostream>
#include <iomanip>
int main() {
double const number = 123.456789;
for (int i = 0; i != 15; ++i) { std::cout << i << ": " << std::setprecision(i) << number << "\n"; }
return 0;
}
将 output :
0: 1e+02
1: 1e+02
2: 1.2e+02
3: 123
4: 123.5
5: 123.46
6: 123.457
7: 123.4568
8: 123.45679
9: 123.456789
10: 123.456789
11: 123.456789
12: 123.456789
13: 123.456789
14: 123.456789
您可以找到关于不同模式 here 的文档:
已修复
科学
hexfloat
默认 float
而你想要的是defaultfloat
,顾名思义就是默认值。
关于c++ - 四舍五入到最大 N 位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370517/