C++ showpoint操作符(详解版)

默认情况下,浮点数不会显示尾数 0,并且如果没有小数部分的浮点数则不显示小数点。例如,以下代码:

double x = 456.0;
cout << x << endl;

将仅显示 456。

现在介绍另一个有用的操作符 showpoint,它允许这些默认值被覆盖。当使用 showpoint 时,表示打印浮点数的小数点和小数位数,即使显示的数值没有小数点。以下是应用了 showpoint 操作符的代码示例:

double x = 456.0;
cout << showpoint << x << endl;

它将显示以下输出结果:

456.000

这里之所以显示了 3 个零,是因为如果没有指定所需的小数点位数,则默认显示 6 个有效数。可以将 fixed、showpoint 和 setprecision 操作符一起使用,以便更好地控制输出的外观,示例如下:

double x = 456.0;
cout << fixed << showpoint << setprecision(2) << x << endl;

此版本的代码产生以下输出:

456.00

下面的程序进一步说明了这些操作符的使用。与 setprecision —样,fixed 和 showpoint 操作符都将持续有效,直到程序员明确更改它们为止:
// This program illustrates the how the showpoint, setprecision, and
// fixed manipulators operate both individually and when used together.
#include <iostream>
#include <iomanip> // Header file needed to use stream manipulators
using namespace std;

int main()
{
    double x = 6.0;
    cout << x << endl;
    cout << showpoint << x << endl;
    cout << setprecision(2) << x << endl;
    cout << fixed << x << endl;
    return 0;
}

程序输出结果:

6
6.00000
6.0
6.00

程序的第 10 行中,当第一次打印 x 时,尚未设置任何操作符,由于显示的值不需要小数点,因此只显示数字 6。

在第 11 行中,当第二次打印 x 时,由于已经设置了 showpoint 操作符,因此会显示小数点并且在后面跟零。但是由于 setprecision 操作符尚未设置,无法控制要打印多少零,所以按默认的 6 个有效数显示 6.00000。

在第 12 行中,当第三次打印 x 时,setprecision 操作符已经设置。但是,由于 fixed 尚未设置,而 setprecision(2) 表示应显示两个有效数,所以显示的是 6.0。

最后,在第 13 行中,当打印最后一个 x 时,fixed 和 setprecision 操作符两者都被设置,指定要打印两位小数,因此显示结果为 6.00。

实际上,当同时使用 fixed 和 setprecision 操作符时,不需要使用 showpoint 操作符。来看以下语句:

cout << fixed << setprecision(2);

该语句将在两个小数位前面自动显示一个小数点。不过,许多程序员更喜欢使用以下语句:

cout << fixed << showpoint << setprecision(2);


推荐文章
死链接(无效链接)是什么?

死链接(DeadLinks)指的是无效链接,也就是那些不可到达的链接。通俗地理解是以前可以通过点击这个链接到达网站页面,后续可能由于网站迁移、改版或操作不当等原因,使得链接指向的目标页面不存在而无法访

外键约束的作用是什么?

外键是该表是另一个表之间联接的字段外键必须为另一个表中的主键外键的用途是确保数据的完整性。它通常包括以下几种:1、实体完整性,确保每个实体是唯一的(通过主键来实施)2、域完整性,确保属性值只从一套特定

Python doctest模块:文档测试(超级详细)

前面章节不止一次讲到,Python支持给函数、类以及类方法添加说明性文档,并提供help()函数和__doc__属性获取指定成员的说明文档。例如: defdisplay(add): ''' 这

Spring Cloud Zuul路由配置详解

在教程《Zuul网关介绍和使用》中,我们学习了如何结合Eureka来实现动态的路由转发。当Zuul集成Eureka之后,其实就可以为Eureka中所有的服务进行路由操作了,默认的转发规则就是“API网

SNMP报文格式剖析(非常详细)

SNMP协议中提供了多种操作类型,但是它们的报文格式主要分为两种格式,下面详细介绍这两种报文格式。 第一种SNMP报文格式 在SNMP协议中,操作类型get-request、get-response

PHP比较运算符

比较运算符就是对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回true;如果为假,则返回false。 PHP中的比较运算符如下表所示: 例子 名称 描述 $a=

C语言最大公约数和最小公倍数

从键盘输入两个正整数a和b,求其最大公约数和最小公倍数。 算法思想 利用格式输入语句将输入的两个数分别赋给a和b,然后判断a和b的关系,如果a小于b,则利用中间变量t将其互换。再利用辗转相除法求出最

绝对路径和相对路径的区别

绝对路径指的是包含域名的完整网址,相对路径指的是不包含域名的被链接页面相对于当前页面的相对网址。 比如页面A的URL是http://c.biancheng.net/view/2225.html,页面

Python设置进程启动的3种方式

前面章节中,已经详解介绍了2种创建进程的方法,即分别使用os.fork()和Process类来创建进程。其中: 使用os.fork()函数创建的子进程,会从创建位置处开始,执行后续所有的程序,主进

什么是网盘?

网盘,又称网络U盘、网络硬盘,是由互联网公司推出的在线存储服务。网盘向用户提供文件的存储、共享、访问、备份等文档管理功能。用户可以通过因特网管理、编辑网盘里的文件。网盘的实质是网盘服务提供商将其服务器

JSP PageContext.release()方法:释放相关资源

该方法用于释放相关资源。 语法: release() 示例 本示例通过pageContext对象的release()方法释放资源,关键代码如下:

MySQL存储引擎精讲(附带各种存储引擎的对比)

接下来介绍一下存储引擎的基本概念、MySQL支持的存储引擎、存储引擎的选择以及操作默认存储引擎。 什么是存储引擎 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和

wps文件名冲突怎么办?

wps文件名冲突是因为当前文件名和同目录下的其他WPS文件的文件名相同,只需要修改一下当前文件的名称就可以了;或者不保存在同一目录下。拓展:WPS覆盖Windows、Linux、Android、iOS

MySQL用户授权(GRANT)

当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用SHOWGRANTFOR语句来查询用户的权限。 注意:新创建的用户只有登录MySQL服务器的权限,没有任何其他权限

9个项目助你在2020年成为前端大师!

初学者(也许一些有经验的开发者也是一样)在读完官方文档,想写一个项目练手的时候不知道做什么项目好,或是有想法,但是无从下手。那么这篇文章将会给你带来很大的帮助。导读无论你是编程新手还是经验丰富的开发人

什么是类(无师自通)

C++类(Class) 使用已经知道的类 #include stringcity,state; city="Chicago"; state="Illinois"; cout

Python异常处理机制到底有什么用?

异常处理是现代编程语言不可或缺的能力,它已经成为衡量一门编程语言是否成熟和健壮的标准之一,C++、Java、C#、Python等高级语言都提供了异常处理机制。 无论你是多么优秀的程序员,你都不能保证

c++中=和==的区别是什么?

c++中=和==的区别1、含义不同:“=”是赋值的意思。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改

学编程难吗?多久能入门?

这篇文章主要是解答初学者的疑惑,没有信心的读者看了会吃一颗定心丸,浮躁的读者看了会被泼一盆冷水。 学编程难吗? 编程是一门技术,我也不知道它难不难,我只知道,只要你想学,肯定能学会。每个人的逻辑思维

mac和windows之间有什么区别?

mac和windows的区别1、体系模型window是开放的平台,由系统统筹整体IT产业链条。硬件需要根据系统来走。因为的他的开放性,所以window成为最普及和用户最多的系统。它就像规划师,安排好硬