欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

关于0.3f不等于0.3的细节,

来源: javaer 分享于  点击 42494 次 点评:259

关于0.3f不等于0.3的细节,


首先0.3f属于float数据类型,0.3属于double数据类型,而float长度为32位,double长度为64位。

在计算机中0.3f与0.3作比较时,需要转换成二进制数后再开始比较

但是0.3f转换成二进制是无线循环的一个值,但是由于精度关系所以会对值进行保留,所以相同的0.3数值会由于float和double精度不同所以精确到的位数不同

 

 通过上图可以看到0.3f和0.3在精确到一定位数后的结果明显不同

这里还需要注意一点,0.3f和0.3进行比较运算时,float会先转换成double数据类型,再与double数据类型的0.3比较

而float数据类型的0.3f 由于舍0入1的关系,导致0.3f的最后一位进1。使得0.3f的值比0.3大,再转换成double数据类型后依然大于0.3。

所以0.3f != 0.3。

相关文章

    暂无相关文章
相关栏目:

用户点评