float和double類型主要爲了科學計算和工程計算而設計。
它們執行二進制浮點運算,提供較爲精確的快速近似計算。
float和double尤其不適用於貨幣計算。
解決辦法:使用BigDecimal、int或long進行貨幣計算
使用int或者long時,以分位單位進行計算,而不是以元爲單位。
BigDecimal:
構造器
BigDecimal(int)
BigDecimal(double)
BigDecimal(long)
BigDecimal(String)
常用方法:
public BigDecimal add(BigDecimal augend) 加法
public BigDecimal subtract(BigDecimal subtrahend) 減法
public BigDecimal multiply(BigDecimal multiplicand) 乘法
public BigDecimal divide(BigDecimal divisor) 除法
public BigDecimal setScale(int arg0,RoundingMode arg1) 設置小數
RoundingMode:
ROUND_UP 截斷位之後非0進位,如4.01保留一位小數得到4.1
ROUND_DOWN 直接截斷,如4.07保留一位小數得到4.0
ROUND_FLOOR 負數作ROUND_UP,正數作ROUND_DOWN
ROUND_GEILING 負數作ROUND_DOWN,正數作ROUND_UP
ROUND_HALF_UP 標準四捨五入,如4.55保留一位小數得到4.6
ROUND_HALF_DOWN 五舍大於五入,如4.55保留一位小數得4.5,4.55001保留一位小數得4.6