作者:武沛齐 出处:
http://www.cnblogs.com/wupeiqi/
本文版权归作者和博客园共有
为啥会有上述图片的现象呢?其实是由于float底层存储原理导致,下面听我娓娓道来。
第一步:浮点数转换为二进制表示
整数部分,直接转换为二进制,即:`100111`
小数部分,让小数一直乘2,小于1则用结果继续乘,大于1则结果减1继续乘,等于1则结束。
如果小数位是0.25就会比较简单,例如:
0.25 * 2 = 0.5 // 小于1,则继续乘
0.5 * 2 = 1 // 等于1,则结束
结束时,将相乘之后等结果的整数部分拼接起来,所以 0.25 的二进制表示:01
第二步:科学计数法表示二进制小数
注意:因为是二进制小数,所以底数是2。