概述
C++格式化输出和精度控制
-
setw
cout 提供了一种指定每个号码使用的最小空格数量的方法。流操作符 setw 可用于建立指定宽度的打印区域。以下是其用法示例:
int main() { int value = 23; cout << setw(5) << value; }
单词 setw 后面括号内的数字表示紧随其后的值的字段宽度。字段宽度是屏幕上打印值的字符位置或空格的最小数量。在此示例中,数字 23 将显示在 5 个空格的字段中。
为了进一步解释其工作原理,请看以下语句:
int main() { int value = 23; cout << "(" << setw(5) << value << ")"; }
输出结果:
( 23)
请注意,这个数字占据了字段的最后两个位置。由于这个数字没有使用整个字段,所以 cout 用空格填充了额外的 3 个位置。因为这个数字出现在字段的右侧,空格“填充”在前面,所以它被认为是右对齐的。
#include <bits/stdc++.h> using namespace std; int main() { int value1 = 123; int value2 = 12; int value3 = 1; cout << setw(5) << value1 << "n"; cout << setw(5) << value2 << "n"; cout << setw(5) << value3 << "n"; }
输出结果:
123 12 1
请注意,setw 操作符要与每个值一起使用,这是因为 setw 只为紧随其后的值建立一个字段宽度。打印该值后,cout 将回到其默认的打印方式。如果数字太大导致字段无法完全容纳,那会怎么祥呢?如下列语句所示:
int main() { int value = 12345; cout << "(" << setw(2) << value << ")"; }
输出结果:
(12345)
在这种情况下,cout 将打印整个数字,因为 setw 只指定了打印字段中最少的位置数。任何需要比指定最小值大的字段的数字将导致 cout 覆盖 setw 值。
- 浮点数的字段宽度包括小数点的位置。
- 字符串的字段宽度包括字符串中的所有字符,包括空格。
- 默认情况下,该字段中打印的值为右对齐。这意味着它与打印字段的右侧对齐,并且必要时在值前填充空格。
-
setprecision
#include <bits/stdc++.h> using namespace std; int main() { double value = 123.456; cout<<value<<endl; cout<<setprecision(7)<<value<<endl; cout<<setprecision(6)<<value<<endl; cout<<setprecision(5)<<value<<endl; cout<<setprecision(4)<<value<<endl; cout<<setprecision(3)<<value<<endl; cout<<setprecision(2)<<value<<endl; cout<<setprecision(1)<<value<<endl; }
输出结果:
123.456 123.456 123.456 123.46 123.5 123 1.2e+02 1e+02
请注意,与 setw 不同的是,setprecision 不计算小数点。例如,当使用 setprecision(6) 时,输出包含 5 位有效数,但是需要 7 个位置来显示 123.456
数 字 操作符 显示的值 28.92786 setprecision(3) 28.9 21.40 setprecision(5) 21.4 109.50 setprecision(4) 109.5 34.78596 setprecision(2) 35 setw和setprecision结合使用
#include <bits/stdc++.h> using namespace std; int main() { double value1 = 123.456; double value2 = 12.3456; double value3 = 1.23456;; cout<<setprecision(5); cout<<setw(8)<<value1<<endl; cout<<setw(8)<<value2<<endl; cout<<setw(8)<<value3<<endl; }//允许显示最多 5 个有效数,并以 8 个字符的字段宽度右对齐打印
输出结果:
123.46 12.346 1.2346
-
fixed
如果一个数字太大,无法使用 setprecision 指定的有效数位数来打印,则许多系统会以科学表示法的方式打印
为了防止出现这种情况,可以使用另一个流操作符 fixed,它表示浮点输出应该以固定点或小数点表示法显示
还是之前的程序:
fixed 操作符与 setprecision 操作符一起使用时,setprecision 即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。而这通常正是我们想要的。
int main() { double value = 123.456; cout<<fixed; cout<<value<<endl; cout<<setprecision(7)<<value<<endl; cout<<setprecision(6)<<value<<endl; cout<<setprecision(5)<<value<<endl; cout<<setprecision(4)<<value<<endl; cout<<setprecision(3)<<value<<endl; cout<<setprecision(2)<<value<<endl; cout<<setprecision(1)<<value<<endl; }
输出结果:
123.456000//默认6位小数 123.4560000 123.456000 123.45600 123.4560 123.456 123.46 123.5
最后
以上就是高大便当为你收集整理的C++格式化输出和精度控制C++格式化输出和精度控制的全部内容,希望文章能够帮你解决C++格式化输出和精度控制C++格式化输出和精度控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复