C++ printf()输出格式控制

本文详细介绍了C++中printf()函数的转换说明符、标志和%式字符串的使用方法,包括浮点数、整数、字符等不同类型的数据输出格式控制,同时解释了如何利用setprecision()与setiosflags()控制输出流的显示精度,提供了实际代码示例进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   [学习笔记--Printf()输出格式控制]
hzh-fa 发表于 2006-8-12 12:26:00 

1.转换说明符
      %a(%A)     浮点数、十六进制数字和p-(P-)记数法(C99)
      %c             字符
      %d             有符号十进制整数
      %f              浮点数(包括float和doulbe)
      %e(%E)     浮点数指数输出[e-(E-)记数法]
      %g(%G)     浮点数不显无意义的零"0"
      %i              有符号十进制整数(与%d相同)
      %u             无符号十进制整数
      %o             八进制整数    e.g.     0123
      %x(%X)      十六进制整数0f(0F)   e.g.   0x1234
      %p             指针
      %s             字符串
      %%            "%"

2.标志
      左对齐:"-"   e.g.   "%-20s"
      右对齐:"+"  e.g.   "%+20s"
      空格:若符号为正,则显示空格,负则显示"-"   e.g.   "%  6.2f"      
      #:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
           对e,g,f 类当结果有小数时才给出小数点。

3.格式字符串(格式)
      [标志][输出最少宽度][.精度][长度]类型
     "%-md" :左对齐,若m比实际少时,按实际输出。
     "%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
                      e.g.    "%7.2s"   输入CHINA
                                             输出"     CH"
     "%m.nf":输出浮点数,m为宽度,n为小数点右边数位
                      e.g.    "%3.1f"    输入3852.99
                                               输出3853.0 
      长度:为h短整形量,l为长整形量


setprecision()与setiosflags()(c++小数点后面精确到n位)

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。 
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。 
例如,下面的代码分别用浮点、定点和指数方式表示一个实数:

//********************* 
//** ch2_1.cpp ** 
//*********************

#include <iostream.h>   
#include <iomanip.h> //要用到格式控制符

void main() 

double amount = 22.0/7; 
cout < <amount < <endl; 
cout < <setprecision(0) < <amount < <endl 
< <setprecision(1) < <amount < <endl 
< <setprecision(2) < <amount < <endl 
< <setprecision(3) < <amount < <endl 
< <setprecision(4) < <amount < <endl;

cout < <setiosflags(ios::fixed); 
cout < <setprecision(8) < <amount < <endl;

cout < <setiosflags(ios::scientific)


< <amount < <endl;


cout < <setprecision(6); //重新设置成原默认设置 
}

运行结果为: 
3.14286 
3.14286 

3.1 
3.14 
3.143 
3.14285714 
3.14285714e+00

该程序在32位机器上运行通过。 
在用浮点表示的输出中,setprecision(n)表示有效位数。 
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,按默认来,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。 
在用定点表示的输出中,setprecision(n)表示小数位数。 
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面 的位数,而非全部数字个数。 
在用指数形式输出时,setprecision(n)表示小数位数。 
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8

C++中setiosflags()的用法。

cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);

setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定

区域内的动作;

iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点

数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;

iso::right 也是setiosflags 的参数,该参数的指定作用是在指定区域内右对齐输出;

setprecision 也是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是设定浮点数;

setprecision(2) 的意思就是小数点输出的精度,即是小数点右面的数字的个数为2。

cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);

合在一起的意思就是,输出一个右对齐的小数点后两位的浮点数。


使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

setiosflags(ios::fixed)是用定点方式表示实数

===================================

===========

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值