print("%f ",5)输出结果为0.000000
print("%,d ",5.01)输出1889785610 ,这两个输出的结果怎么理解,求指点
整数和浮点数的内部存储是不同的,你把整数当浮点数解析,比如5,那么阶码、尾数对应的数据存储都是0,所以结果是0
相反,5.01你当作整数去解析,那么阶码、尾数这些位都是有值的,所以结果是一个很大的整数。
具体你可以看IEEE 754浮点数规范。
写为printf(),注意最后的f。
http://blog.163.com/dsp_lnint/blog/static/10316743420103154327115/
看这个例子,同样0x00280000,如果理解为整数,它是十六进制的280000,一个很大的数
理解为浮点数是 3.6734198463196484624023016788195e-39 一个很小的数
0x00280000(real*4)
转换成二进制
00000000001010000000000000000000
符号位 指数部分(8位) 尾数部分
0 00000000 01010000000000000000000
符号位=0;因指数部分=0,则:尾数部分M为m:
0.01010000000000000000000=0.3125
该浮点数的十进制为:
(-1)^0*2^(-126)*0.3125
=3.6734198463196484624023016788195e-39