C++ setprecision用法详解
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ setprecision用法详解相关的知识,希望对你有一定的参考价值。
C++ setprecision用法详解
可以通过使用 setprecision
操作符来控制显示浮点数值的有效数字的数量。
导入头文件:
#include <iomanip>
#include <iostream>
#include <iomanip> // Header file needed to use setprecision
using namespace std;
int main()
double number1 = 132.364, number2 = 26.91;
double quotient = number1 / number2;
cout << quotient << endl;
cout << setprecision(5) << quotient << endl;
cout << setprecision(4) << quotient << endl;
cout << setprecision(3) << quotient << endl;
cout << setprecision(2) << quotient << endl;
cout << setprecision(1) << quotient << endl;
return 0;
4.91877
4.9188
4.919
4.92
4.9
5
请注意,如果有效数少于要显示的数字,则 setprecision 将舍入,而不是截断数字。另外还需要注意的是,末尾的零将被省略。因此,尽管指定了 setprecision(5),但是 21.40 仍显示为 21.4。
setw 可以设置字段宽度。
// This program asks for sales figures for three days.
// The total sales are calculated and displayed in a table.
#include <iostream>
#include <iomanip> // Header file needed to use stream manipulators
using namespace std;
int main()
double day1, day2, day3, total;
// Get the sales for each day
cout << "Enter the sales for day 1: ";
cin >> dayl;
cout << "Enter the sales for day 2: ”;
cin >> day2;
cout << "Enter the sales for day 3: ”;
cin >> day3;
// Calculate total sales
total = day1 + day2 + day3;
// Display the sales figures
cout << "\\nSales Figures\\n";
cout << "-------------\\n" ;
cout << setprecision (5);
cout << "Day 1: " << setw(8) << day1 << endl;
cout << "Day 2: " << setw(8) << day2 << endl;
cout << "Day 3: " << setw(8) << day3 << endl;
cout << "Total: " << setw(8) << total << endl;
return 0;
Enter the sales ;for day 1: 321.57
Enter the sales for day 2: 269,60
Enter the sales for day 3: 307.00
Sales Figures
-------------
Day 1: 321.57
Day 2: 269.6
Day 3: 307
Total: 898.17
该程序创建的输出,按照指示,允许显示最多 5 个有效数,并以 8 个字符的字段宽度右对齐打印。
//#include"stdafx.h"//这里用不了,只能在源程序选择属性——选择C/C++——预编译头选择不使用预编译头
#include<iostream>
#include<iomanip>
using namespace std;
void main()
double a = 123.456789012345;
cout << a << endl;//默认保留六位有效数字,不包括小数点
cout << setprecision(9) << a << endl;//set(7)保留七位有效数字
cout << setprecision(6);//设置精度为6 但是后面没有选择输出哪个 比如 没有写a 所以不输出
cout << setiosflags(ios::fixed) ;//这个也是 只是控制小数的精度
cout << setiosflags(ios::fixed) << setprecision(8) << a << endl;
cout << setiosflags(ios::scientific) << a << endl;//setiosflags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
cout << setiosflags(ios::scientific) << setprecision(4) << a << endl;
setf(long f)
根据f设置相应的格式并返回此前的设置long unsetf(long f)
清除相关设置setiosflags(ios::showpos)
表示加一个+setfill(int x)
在位置多余处填充ASCII 的字符setw(int n)
数据的输出宽度为 nint width()
返回输出域宽度 若无则返回0setiosflags(long f)
根据f设置相应格式,并返回到一个输出流coutressetiosflags(long f)
清除相关设置
加油!
感谢!
努力!
以上是关于C++ setprecision用法详解的主要内容,如果未能解决你的问题,请参考以下文章
C++数字的输出处理问题(保留几位小数,或保留几位有效数字)
c++入门——double类型和fixed<<setprecision()