基础知识总结:小数计算为什么不精确?

类型float的的计算不精确的问题 

System.out.println(0.1f*0.1f);

得到0.0100001

不精确的原因:因为计算机是用二进制存储小数的,这个二进制不能精确表示0.1只能表示一个无限接近0.1的一个数,为什么0.1不能精却表示因为二进制使用2的多少次方

2^-1           0.5

2^-2           0.25

2^-3           0.125

2^-4           0.0625

所以进行计算的结果会出现不精确的情况,当误差足够小的时候就看上去是精确的,其实一般是不精确的

要保持精确用BigDecimal的类型,就是效率低

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章