BigDecimal
- 使用基本类型做浮点数运算(即小数运算)会有精度问题,如果要解决这种精度问题,可以使用 BigDecimal;
- 对于浮点运算,不要使用基本类型,而使用 BigDecimal 类;
public static void main(String[] args) {
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
}
1. 概述
相关内容 | 具体描述 |
---|
包 | java.math 使用时需要导包 |
类声明 | public class BigDecimal extends Number implements Comparable |
描述 | BigDecimal类提供了算术,缩放操作,舍入,比较,散列和格式转换的操作。提供了更加精准的数据计算方式 |
- 注意 BigDecimal 不是继承 Math,而是继承自 Number;
2. 构造方法
构造方法名 | 描述 |
---|
BigDecimal(double val) | 将 double 类型的数据封装为 BigDecimal 对象 |
BigDecimal(String val) | 将 BigDecimal 的字符串表示形式转换为 BigDecimal |
3. 常用方法
- BigDecimal 类中使用最多的还是提供的进行四则运算的方法;
类型 | 方法 | 说明 |
---|
BigDecimal | add(BigDecimal value) | 加法运算 |
BigDecimal | subtract(BigDecimal value) | 减法运算 |
BigDecimal | multiply(BigDecimal value) | 乘法运算 |
BigDecimal | divide(BigDecimal value) | 除法运算 |
- 注意:对于 divide 方法来说,如果除不尽的话,就会出现 java.lang.ArithmeticException 异常,此时可以使用 divide 方法的另一个重载方法:
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode): divisor:除数; scale:精确的位数;roundingMode:取舍模式
;