BigInteger 和 BigDecimal
- BigInteger 支持任意长度的整数;BigDecimal 支持任意精度的浮点数,可以用它进行精确的计算
- BigInteger 和 BigDecimal 均是不可变的
- 创建
new BigXxx()BigXxx.valueOf()Scanner对象.nextBigXxx()
- 方法
- 加减乘除:
add(),substract(),multiple(),divide(),remainder(),divideAndRemainder(),max(),min() - 比较:
compareTo() - 转换:
BigXxx对象.intValue(),doubleValue() - 舍入模式:
BigDecimal对象.divide(BigDecimal, RoundingMode),如RoundingMode.HALF_UP四舍五入
- 加减乘除:
使用BigDecimal精度丢失问题
- 问题:使用
new BigDecimal(double val),传入参数为double类型发生精度丢失 - 原因:
double不能表示为任何有限长度的二进制小数 - 解决方法:
- 使用
new BigDecimal(String)构造函数,创建一个参数以字符串表示数值的对象 - 浮点数使用
valueOf方法
- 使用
1 | public class Main { |
比较 BigDecimal
- 比较 BigDecimal 用
compareTo方法,例如:if(bigDecimal1.compareTo(bigDecimal2) == 0) {...}
1 | public class Main { |