浮点数中%a.bf的介绍、探索数型的上下界、不同进制数的转换和接绍——the seventh——2022.12.28
%a.bf的含义
%f是输出float(单精度浮点型)型变量,%m.nf中m代表输出数长,n代表小数点后的数长,即保留n位小数。
如果小数点后的数大于n,例如12.4567按照%5.2f输出得12.46(四舍五入),如果总位数大于m(小数只到两位),按照实际位数输出,例如111.4567按%5.2f输出,111.46(总数长6)。(注意小数点也算一位数字,占据一个数长)
如果实际位数小于m,则要补齐空格,例如1.23按照%5.2f输出,_1.23(_表示空格)(四位数长加空格一共五位)再来讨论小数小于n的情况,小数小于n空格补齐,例如23.1按照%5.2f输出,得到23.1_(_表示空格)。
综上,m多了不限制小数点前,n多了四舍五入,mn少了空格补足。
C语言中输出格式%m.nf的意思
- m:表示宽度
- .n:表示精度
‘’(单引号)例如‘C’、‘\040’(八进制表示字符形式)——通常属于char类型——%c
浮点数一般默认是double类型,如果有例如以6.0f的形式出现的表示float类型——%e(double)、%f(float)
0X3(十六进制)——八进制和十六进制通常优先选择unsigned int类型——%#o(八进制)、%#x(十六进制)
6L(6的长整型long)——long——%ld
0x5.b6p12(浮点数的p记数法)——float——%a
2.9e05l——long double——%le
因为C语言在limit.h和float.h头文件里预先预定了常见数据类型的限制,所以可以利用来观察整数上溢、浮点数上溢和浮点数下溢的情况。
#include <stdio.h>
#include <limit.h>
#include <float.h>
int big_int=2147483647;
float big_float=3.4e38;
float small_float=10.0\3;
printf("The big int data is %d\n",big_int+1); /*越界,结果为-2147483648*/
printf("The big float data is %f\n",big_float*10); /*越界,输出inf*/
printf("The small float data is %f\n",small_float); /*打印3.333333精度缺失*/
printf("The MAX int data is %d\n",INT_MAX); /*打印2147483647*/
printf("The MAX float data is %f\n,FLT_MAX); /*打印340282346638528859811704183484516925440.0000*/
return 0;
进制的转换


1.0B或0b——表示二进制的前缀 例如:0B10101010111 或者 0b10101010111
2.0O或0表示八进制的前缀
3.0x是16进制的前缀,H是16进制的后缀
都是表示十六进制数,意义上没有什么区别,完全相等。至于什么时候用0x,什么时候用H,
这取决于你在什么环境下使用,如果在C/C++/C#,必须用0x来表示。
在C/C#语言中是不能用H的.
4.十进制没有前缀后缀,就是平常的数字。

浙公网安备 33010602011771号