关于print("%f ",5)输出结果为0.000000

print("%f ",5)输出结果为0.000000
print("%,d ",5.01)输出1889785610 ,这两个输出的结果怎么理解,求指点

整数和浮点数的内部存储是不同的,你把整数当浮点数解析,比如5,那么阶码、尾数对应的数据存储都是0,所以结果是0
相反,5.01你当作整数去解析,那么阶码、尾数这些位都是有值的,所以结果是一个很大的整数。
具体你可以看IEEE 754浮点数规范。

http://baike.baidu.com/link?url=ZZN71IkflzRSXVCBHVc_Y4JqPaCvZzja7jGIuiQ72v6vHFTWwiQTl9wfTKBEm7-s2M9_ql7WdEmAw3kS1drOm4pjKsU8k275gwfCsZtXFDpd27VM0_lNNryHsrgx00hHw48JrEyRacJ_V8j6rlcsKAoZxxu0lySYNFJ4LQrFEg_

写为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