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

Link

Link

加油!

感谢!

努力!

以上是关于C++ setprecision用法详解的主要内容,如果未能解决你的问题,请参考以下文章

C语言 · C++中map的用法详解

C++数字的输出处理问题(保留几位小数,或保留几位有效数字)

C++中setiosflags()的用法

c++入门——double类型和fixed<<setprecision()

c++入门——double类型和fixed<<setprecision()

c++入门——double类型和fixed<<setprecision()