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) 数据的输出宽度为 n
  • int width() 返回输出域宽度 若无则返回0
  • setiosflags(long f) 根据f设置相应格式,并返回到一个输出流cout
  • ressetiosflags(long f) 清除相关设置

Link

Link

加油!

感谢!

努力!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐