简介

Java中提供了对于大实数运算的相关类BigDecimal,对于那些无法用二进制数精确运算的数可以使用BigDecimal来进行精确运算,BigDecimal的底层存储的是一个 byte 数组,对应String中的每一位,比如:
-132.131432

[45, 49, 51, 50, 46, 49, 51, 49, 52, 51, 50]

[‘-‘, ‘1’, ‘3’, ‘2’, ‘.’, ‘1’, ‘3’, ‘1’, ‘4’, ‘3’, ‘2’]

常用方法

方法名称 说明
BigDecimal(String val) 用字符串构造一个大实数
static BigDecimal valueOf(double val) 返回数值为 val 的大实数,对于 double 范围内数字推荐用此方法,底层有优化
BigDecimal add(BigDecimal val) 返回大实数之和
BigDecimal subtract(BigDecimal val) 返回大实数之差
BigDecimal multiply(BigDecimal val) 返回大实数之积
BigDecimal divide(BigDecimal val) 返回大实数之商,商为无限小数会报错
BigDecimal divide(BigDcimal val,int scale,RoundingMode roundingMode) 返回大实数之商,保留小数点后几位,并按指定舍入模式舍入
int compareTo(BigDecimal val) 如果相等返回 0,大于返回正数,小于返回负数