Java--大數(shù)值(BigInteger 和 BigDecimal)

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

使用靜態(tài)的 valueOf 方法可以將普通的數(shù)值轉(zhuǎn)換為大數(shù)值:

BigInteger a = BigInteger.valueOf(100);

BigInteger 常用API

  • BigInteger add(BigInteger other)
    BigInteger subtract(BigInteger other)
    BigInteger multiply(BigInteger other)
    BigInteger divide(BigInteger other)
    BigInteger mod(BigInteger other)
    返回這個大整數(shù)與另一個大整數(shù)other的和、差、積、商以及余數(shù)。
  • int compareTo(BigInteger other)
    如果這個大整數(shù)與另一個大整數(shù)other相等,返回 0 ;如果這個大整數(shù)小于另一個大整數(shù)other,返回負數(shù);否則,返回正數(shù)。

  • static BigInteger valueOf(long x)
    返回值等于x的大整數(shù)。

BigDecimal常用API

  • BigDecimal add(BigDecimal other)
    BigDecimal subtract(BigDecimal other)
    BigDecimal multiply(BigDecimal other)
    BigDecimal divide(BigDecimal other, RoundingMode mode) 5.0
    返回這個大實數(shù)與另一個大實數(shù)other的和、差、積、商。要想計算商,必須給出舍入方式(rounding mode)。RoundingMode.HALF_UP 是我們?nèi)粘I钪械乃纳嵛迦敕绞?。(即,?shù)值 0 到 4 舍去,數(shù)值 5 到 9 進位)。
  • int compareTo(BigDecimal other)
    如果這個大實數(shù)與另一個大實數(shù)相等,返回 0 ;如果這個大實數(shù)小于另一個大實數(shù),則返回負數(shù);否則,返回正數(shù)。

  • static BigDecimal valueOf(long x)
    返回值為 x 的一個大實數(shù)。

舍入方式枚舉常量

常量 描述
ROUND_CEILING 向正無限大方向舍入的舍入模式。
ROUND_DOWN 向零方向舍入的舍入模式。
ROUND_FLOOR 向負無限大方向舍入的舍入模式。
ROUND_HALF_DOWN 向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向下舍入。
ROUND_HALF_EVEN 向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。
ROUND_HALF_UP 向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向上舍入。
ROUND_UNNECESSARY 用于斷言請求的操作具有精確結(jié)果的舍入模式,因此不需要舍入。(默認模式)
ROUND_UP 遠離零方向舍入的舍入模式。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容