天天看點

Java--大數值(BigInteger 和 BigDecimal)

如果基本的整數和浮點數精度不能夠滿足需求,那麼可以使用 java.math 包中的兩個很有用的類:BigInteger 和 BigDecimal。這兩個類可以處理包含任意長度數字序列的數值。BigInteger類實作了任意精度的整數運算,BigDecimal實作了任意精度的浮點數運算。

使用靜态的 valueOf 方法可以将普通的數值轉換為大數值:

BigInteger 常用API

  • BigInteger add(BigInteger other)

    BigInteger subtract(BigInteger other)

    BigInteger multiply(BigInteger other)

    BigInteger divide(BigInteger other)

    BigInteger mod(BigInteger other)

    傳回這個大整數與另一個大整數other的和、差、積、商以及餘數。

  • int compareTo(BigInteger other)

    如果這個大整數與另一個大整數other相等,傳回 0 ;如果這個大整數小于另一個大整數other,傳回負數;否則,傳回正數。

  • static BigInteger valueOf(long x)

    傳回值等于x的大整數。

BigDecimal常用API

  • BigDecimal add(BigDecimal other)

    BigDecimal subtract(BigDecimal other)

    BigDecimal multiply(BigDecimal other)

    BigDecimal divide(BigDecimal other, RoundingMode mode) 5.0

    傳回這個大實數與另一個大實數other的和、差、積、商。要想計算商,必須給出舍入方式(rounding mode)。RoundingMode.HALF_UP 是我們日常生活中的四舍五入方式。(即,數值 0 到 4 舍去,數值 5 到 9 進位)。

  • int compareTo(BigDecimal other)

    如果這個大實數與另一個大實數相等,傳回 0 ;如果這個大實數小于另一個大實數,則傳回負數;否則,傳回正數。

  • static BigDecimal valueOf(long x)

    傳回值為 x 的一個大實數。

舍入方式枚舉常量

常量 描述
ROUND_CEILING 向正無限大方向舍入的舍入模式。
ROUND_DOWN 向零方向舍入的舍入模式。
ROUND_FLOOR 向負無限大方向舍入的舍入模式。
ROUND_HALF_DOWN 向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向下舍入。
ROUND_HALF_EVEN 向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。
ROUND_HALF_UP 向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向上舍入。
ROUND_UNNECESSARY 用于斷言請求的操作具有精确結果的舍入模式,是以不需要舍入。(預設模式)
ROUND_UP 遠離零方向舍入的舍入模式。