Java Puzzlers筆記--Puzzle 2: Time for a change 關於浮點型的問題

public class Change{
    public static void main(String[] args){
       System.out.println(2.00 - 1.10);
    }
}

Solution:
    結果顯示是:
    0.8999999999999999999999999999
   由於1.1不能用double來準確表示,而是用了一個接近的數來表示。

TID:
    not all decimals can be represnted exaclty using binary floating-point;
    Binary floating-point is particularly ill-suited to calculations.
    Always use the BigDecimal(String) constructor, newver BigDecimal(double).
    avoid float and double where exact answers are required; for monetary calculations, use int, long, or BigDecimal.

Correctly:
import java.math.BigDecimal;
public class Change{
    public static void main(String[] args){
       System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章