在C++中,浮点数表现为小数或者以科学计数法表示的指数。printf()函数使用e/E、f/F、g/G和a/A来打印浮点数。

1 e和E参数

printf()函数的type类型是e和E参数时,将打印以科学计数法表示浮点数。例如,

float f = 1.23f;printf("%e", f);

此时的输出为1.230000e+00。默认情况下e前面尾数小数位是6位,不足6位则不零;e后面的指数是2位或者3位。当要输出的值的小数位超过6位时,则使用四舍五入的方法,只保留6位。例如

float f = 1.2345678f;printf("%e", f);

此时的输出为1.234568e+00。

E和e的用法类似,使用E时,用“E”来表示指数,例如

float f = 1.23f;printf("%E", f);

此时的输出为1.230000E+00。

2 f和F参数

printf()函数的type类型是e和E参数时,将打印以小数的方式表示浮点数。例如

float f = 1.23f;printf("%f", f);

此时的输出是1.230000。默认情况下,小数点后保留6位有效数字,如果要打印数值的小数位数超过6位,则使用四舍五入的方法保留6位有效数字。

F和F的用法类似,使用F时,输出的无穷大是大写“INF”,而使用f输出无穷大时是小写的“inf”。

3 g和G参数

printf()函数的type类型是g和G参数时,可以看做是e/E和f/F两个参数的组合,根据要打印的值在这两组参数之间进行切换。当指数值小于-4或者大于等于精度时,切换到e/E参数,否则使用f/F参数。但是需要注意的是,无论是哪种参数,如果要输出的值有效位数不足6位,printf()的输出也不会补零。

例如,

float f = 1.23f;printf("%g", f);

此时的输出是1.23。使用小数格式显示的1.23,使用科学计数法格式显示,则为1.23e+00,比科学计数法更“短”,因此此时%g切换为%f。

如下代码

float f = 0.000012345f;printf("%g", f);

此时的输出是1.2345e-05,因为此时比使用小数显示的0.000012345更“短”,%g参数切换为%e。

使用%g时,e前面的尾数默认的总长为6位(注意不是小数位,而是总长),要显示的值超过6位则使用四舍五入保留6位。

float f = 1.23456789f;printf("%g", f);

此时,%g切换为%f,并且四舍五入保留6位,其输出为1.23457。

当使用%G时,会根据相应条件切换到%E和%F。

4 a和A参数

printf()函数的type类型是a和A参数时,使用p-计数法显示数字。以p-计数法显示的数以0x开头,然后是十六进制浮点数部分,接着是p,后面是以 2为底的阶码。例如,0xb.1p2,将其转换为10进制为(11+1*(1/16))*22。所以,

double f = 5;printf("%a", f);

此时,显示的内容是0x1.4000000000000p+2,将其化为十进制的表达式为(1+4*(1/16))*22=5。

A和a的用法类似,使用A时,输出的前缀变为“0X”,“P”表示基数,用大写字母“ABCDEF”表示十六进制数。

C++中printf()函数的用法4相关推荐

  1. C语言printf重入,单片机中printf函数的重映射

    单片机中printf函数的重映射 一.源自于:大侠有话说 1.如果你在学习单片机之前学过C语言,那么一定知道printf这个函数.它最最好用的功能 除了打印你想要的字符到屏幕上外,还能把数字进行格式化 ...

  2. php 格式化评论量函数,深入剖析PHP中printf()函数格式化使用

    printf()函数优点在于可以格式化输出! printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ② ...

  3. C++中rand()函数的用法

    C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...

  4. C语言中图形函数及其用法

    C语言中图形函数及其用法  Turbo C 2.0具有丰富的图形功能,它提供了70多个图形函数.在这里只介绍最常用的一部分,其余的图形函数及用法可参阅相关书籍.图形函数均在头文件"graph ...

  5. C中printf函数的实现原理

    一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机 ...

  6. 浅述numpy中argsort()函数的用法

    浅述python中argsort()函数的用法 由于想使用python用训练好的caffemodel来对很多图片进行批处理分类,学习过程中,碰到了argsort函数,因此去查了相关文献,也自己在pyt ...

  7. C++中substr函数的用法

    C++中substr函数的用法 #include<string> #include<iostream> using namespace std; main() { string ...

  8. numpy中where函数的用法

    numpy中where函数的用法 numpy.where(condition,x,y)--若满足condition,输出x,否则输出y. 举例: 例1:一维数组 >>> a = np ...

  9. delphi中move函数的用法

    delphi中move函数的用法 -------------------------------------------------------------------------------- 20 ...

最新文章

  1. C#中String对象转换为Font对象的方法
  2. Java能抵挡住JavaScript的进攻吗?
  3. [译]Effective Kotlin系列之探索高阶函数中inline修饰符(三)
  4. Hack Knowledges
  5. NYOJ 585 取石子(六)
  6. 【Linux】一步一步学Linux——write命令(236)
  7. 在控制台中录入一个字符串 , 打印这个字符串中的字符以及出现的次数(Python)
  8. informix报错244_关于informix的配置问题
  9. Exchange Server2010系列之十一:部署CAS+HT角色高可用性
  10. 单用户修改root密码--Ubuntu 16.04.3 LTS
  11. 计蒜客挑战难题:字符串长度
  12. Android 系统(119)---Android启动页黑屏及最优解决方案
  13. java中jscrollpane_java中JScrollPane问题
  14. Intel IPP密码库 IPPCP 2018 开发笔记与总结(全)
  15. android mvp快速创建,学习MVPArms历程之Android Studio快速创建ArmsComponent组件化项目
  16. 三菱FX1N与东元Teco N310变频器通讯实战程序
  17. Mask RCNN 算法 No Instances to display
  18. javacv开发详解之19:如何使用批量的多张图片制作apng动态图,再也不用担心不会制作动态图了
  19. 怎么用小程序挣钱?想赚钱就做这5类小程序!
  20. JavaScript高级编程设计(第三版)——第四章:变量作用域和内存问题

热门文章

  1. nginx启动与配置
  2. 巧用便签里的待办列表 让工作更有效率
  3. 弘辽科技:淘宝 ”问大家“出现差评转化率急剧下滑怎么办呢?
  4. android opencv单机版人脸识别+比对
  5. 【JavaScript—数组】详解js数组一篇文章吃透js-数组
  6. android开发读书笔记
  7. C语言sizeof求结构体的大小
  8. 关于C语言数组赋值方法
  9. php 时间相差 小时 分钟,php程序时间相差8个小时的解决办法
  10. LambdaQueryWrapper使用 group分组、sum聚合函数 进行统计,并分页排序