C++中printf()函数的用法4

在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”表示十六进制数。

发布了314 篇原创文章 · 获赞 206 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/105577669