IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> (C++) iomanip流控制(浮点数输出) -> 正文阅读

[C++知识库](C++) iomanip流控制(浮点数输出)

前言说明

我们用C++的cout输出浮点数的时候,不像用printf一样方便。有一定的自己的特点,也可以通过以下辅助的函数方法获得想要的输出方法式。

依赖头文件#include <iomanip>

直接使用cout

代码输出
cout << 1122334455.141592653589793 << endl;1.12233e+09
cout << 123.141592653589793 << endl;123.142
cout << 3.141592653589793 << endl;3.14159
cout << -3.141592653589793 << endl;-3.14159
cout << 666666.666666 << endl;666667
cout << 123.000000123 << endl;123
cout << 123.0009 << endl;123.001
cout << 3.14 << endl;3.14
cout << 0.1234567 << endl;0.123457
cout << 0.0 << endl;0

观察输出我们可知,cout对于浮点数的直接输出是默认6位有效数字

  • 取舍遵循四舍五入
  • 整数多余6位采用科学计数法。
  • 小数多余6位直接舍去。
  • 若整数部分为0,则不作为有效位。
  • (经计算后)小数部分若为0,也无效
  • 负号不占数值位

#include <iomanip>

该表格摘自百度百科iomanip_百度百科 (baidu.com)

控制符作用
setbase(n)设置整数为n进制(n=8,10,16)
setfill(n)设置字符填充,c可以是字符常或字符变量
setprecision(n)设置浮点数的有效数字为n位
setw(n)设置字段宽度为n位
setiosflags(ios::fixed)设置浮点数以固定的小数位数显示
setiosflags(ios::scientific)设置浮点数以科学计数法表示
setiosflags(ios::left)输出左对齐
setiosflags(ios::right)输出右对齐
setiosflags(ios::skipws)忽略前导空格

以下我们定义一个**const double PI = acos(-1.0);**

setbase(n) 进制转换

通常应用与整数,只限于8,10,16

代码输出
cout << setbase(16) << 1234 << endl;4d2
cout << setbase(10) << 1234 << endl;1234
cout << setbase(8) << 1234 << endl;2322
cout << setbase(2) << 1234 << endl;1234

可见对于非法的进制,如2进制,默认无效,输出还是十进制

setprecision(n) 设置浮点数有效位

代码输出
cout << setprecision(1) << PI << endl;3
cout << setprecision(2) << PI << endl;3.14
cout << setprecision(10) << PI << endl;3.141592654
cout << setprecision(0) << PI << endl;3
cout << setprecision(1.9) << PI << endl;3
cout << setprecision(-1) << PI << endl;3.14159

可见若规定0位则会至少保留一位,若是浮点数则会默认floor(),若是负数则视为不合法输出默认的6位

fixed + setprecision(n) 四舍六入五成双

代码输出
cout << fixed << setprecision(2) << 9.8249 << endl;9.82
cout << fixed << setprecision(2) << 9.82671 << endl;9.83
cout << fixed << setprecision(2) << 9.8350 << endl;9.84
cout << fixed << setprecision(2) << 9.83501 << endl;9.84
cout << fixed << setprecision(2) << 9.8250 << endl;9.82
cout << fixed << setprecision(2) << 9.82501 << endl;9.83

此时的setprecision只限定小数部分的位数

四舍六入五成双_百度百科 (baidu.com)

(1)被修约的数字小于5时,该数字舍去;

(2)被修约的数字大于5时,则进位;

(3)**(5凑偶)**被修约的数字等于5时,要看5前面的数字

若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;

若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

setw 设定字段宽度

setfill(n) 设置字符填充

为了展示输出,此处将setwsetfill混合使用

代码输出
cout << setfill(’%’) << setw(20) << PI << endl;%%%%%%%%%%%%%3.14159
cout << setfill(’%’) << setw(20) << left << PI << endl;3.14159%%%%%%%%%%%%%
cout << setfill(’%’) << setw(2) << PI << endl;3.14159

可见字宽默认(right)补前导空位,setfill只有在有空位的时才填充,若setw的设定没有该输出的数据长度大时,无效

scientific 科学计数法

代码输出
cout << scientific << PI << endl;3.141593e+00
cout << scientific << uppercase << PI << endl;3.141593E+00
cout << scientific << 333.141592653589793 << endl;3.331416e+02
cout << scientific << uppercase << 0.041592653589793 << endl;4.159265E-02

可见小数部分默认保留6位

skipws 忽略前导空格(输入)

相关资料 C++ 基本的输入输出 | 菜鸟教程 (runoob.com)

当从一个流进行读取时,跳过空白字符(spaces, tabs, newlines).

对应的有noskipws关闭skipws 标志

#include <iostream>
#include <iomanip>
using namespace std;

int main(void)
{
    char ch1, ch2;
    //cin已经默认启动skipws
    //最直接的感受是:
    //在输入这两个字符时,在第二个字符结束(即回车时)之前,无论输入多少空格,回车,tab都与最后的输入结果无关
    cin >> ch1 >> ch2;

    cout << ch1 << endl;
    cout << ch2 << endl;

    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:11:24  更:2021-08-17 15:15:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:47:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计