基礎知識總結:小數計算爲什麼不精確?

類型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的類型,就是效率低

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