目录
一、重要常用方法:+、-、×、÷
二、所有方法
由于float类和double类在运算时容易出现误差,于是需要借助BigDecimal类控制精度。
eg:控制台计算0.1+0.2:
System.out.println(0.1+0.2);
结果:存在误差
BigDecimal类计算需要new对象来计算,用两个对象来进行相应的计算。
一、重要常用方法:+、-、×、÷
一、+:add后返回的是一个新对象,而不是改变原对象的值,例如:
BigDecimal b1 = new BigDecimal("0.111111111"); //注:必须带双引号
BigDecimal b2 = new BigDecimal("0.222222222");
BigDecimal b3 = b1.add(b2);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
结果:对象b1和b2的值未改变,add后的返回值赋给b3。
如果我们想用int型的运算结果,可以用value方法。
eg:需要int型的
System.out.println(b3.intValue());
结果:
二、-×÷:
BigDecimal b3 = b1.subtract(b2); //减法 BigDecimal b4 = b1.multiply(b2); //乘法 BigDecimal b5 = b1.divide(b2); //除法
二、所有方法
| 变量和类型 | 方法 | 描述 |
|---|---|---|
| BigDecimal | abs() | 返回 BigDecimal其值是此的绝对值 BigDecimal ,其标为 this.scale() 。 |
| BigDecimal | abs(MathContext mc) | 返回 BigDecimal其值为此 BigDecimal的绝对值,并根据上下文设置进行舍入。 |
| BigDecimal | add(BigDecimal augend) | 返回 BigDecimal其值为 (this + augend) ,其比例为 max(this.scale(), augend.scale()) 。 |
| BigDecimal | add(BigDecimal augend, MathContext mc) | 返回 BigDecimal其值为 (this + augend) ,根据上下文设置进行舍入。 |
| byte | bytevalueExact() | 将 BigDecimal转换为 byte ,检查是否丢失了信息。 |
| int | compareTo(BigDecimal val) | 将此 BigDecimal与指定的 BigDecimal 。 |
| BigDecimal | divide(BigDecimal divisor) | 返回BigDecimal其值为(this / divisor) ,其首选比例为(this.scale() - divisor.scale()) ; 如果无法表示准确的商(因为它具有非终止的十进制扩展),则抛出ArithmeticException 。 |
| BigDecimal | divide(BigDecimal divisor, int roundingMode) | 已过时。 应该优先使用方法divide(BigDecimal, RoundingMode) ,而不是这种传统方法。 |
| BigDecimal | divide(BigDecimal divisor, int scale, int roundingMode) | 已过时。 应该优先使用方法divide(BigDecimal, int, RoundingMode)来使用该传统方法。 |
| BigDecimal | divide(BigDecimal divisor, int scale, RoundingMode roundingMode) | 返回 BigDecimal其值为 (this / divisor) ,其比例为指定的比例。 |
| BigDecimal | divide(BigDecimal divisor, MathContext mc) | 返回 BigDecimal其值为 (this / divisor) ,根据上下文设置进行舍入。 |
| BigDecimal | divide(BigDecimal divisor, RoundingMode roundingMode) | 返回 BigDecimal其值为 (this / divisor) ,其比例为 this.scale() 。 |
| BigDecimal[] | divideAndRemainder(BigDecimal divisor) | 返回一个两元件 BigDecimal阵列含有的结果 divideToIntegralValue ,随后的结果 remainder上的两个操作数。 |
| BigDecimal[] | divideAndRemainder(BigDecimal divisor, MathContext mc) | 返回一个两元件 BigDecimal阵列含有的结果 divideToIntegralValue ,随后的结果 remainder上与根据上下文设置进行舍入计算出的两个操作数。 |
| BigDecimal | divideToIntegralValue(BigDecimal divisor) | 返回 BigDecimal其值是 (this / divisor)舍入的商 (this / divisor)的整数部分。 |
| BigDecimal | divideToIntegralValue(BigDecimal divisor, MathContext mc) | 返回 BigDecimal ,其值是整数部分 (this / divisor) 。 |
| double | doublevalue() | 将 BigDecimal转换为 double 。 |
| boolean | equals(Object x) | 将此 BigDecimal与指定的 Object进行相等性比较。 |
| float | floatValue() | 将 BigDecimal转换为 float 。 |
| int | hashCode() | 返回此 BigDecimal的哈希码。 |
| int | intValue() | 将 BigDecimal成 int 。 |
| int | intValueExact() | 将 BigDecimal转换为 int ,检查是否丢失了信息。 |
| long | longValue() | 将 BigDecimal转换为 long 。 |
| long | longValueExact() | 将此 BigDecimal转换为 long ,检查是否丢失了信息。 |
| BigDecimal | max(BigDecimal val) | 返回 BigDecimal和 val 。 |
| BigDecimal | min(BigDecimal val) | 返回 BigDecimal和 val 。 |
| BigDecimal | movePointLeft(int n) | 返回一个 BigDecimal ,相当于这个小数点向左移动 n位置。 |
| BigDecimal | movePointRight(int n) | 返回一个 BigDecimal ,相当于这个小数点向右移动 n位置。 |
| BigDecimal | multiply(BigDecimal multiplicand) | 返回 BigDecimal其值为 (this × multiplicand) ,其比例为 (this.scale() + multiplicand.scale()) 。 |
| BigDecimal | multiply(BigDecimal multiplicand, MathContext mc) | 返回 BigDecimal其值为 (this × multiplicand) ,根据上下文设置进行舍入。 |
| BigDecimal | negate() | 返回 BigDecimal其值为 (-this) ,其比例为 this.scale() 。 |
| BigDecimal | negate(MathContext mc) | 返回 BigDecimal其值为 (-this) ,根据上下文设置进行舍入。 |
| BigDecimal | plus() | 返回 BigDecimal其值为 (+this) ,其比例为 this.scale() 。 |
| BigDecimal | plus(MathContext mc) | 返回 BigDecimal其值为 (+this) ,根据上下文设置进行舍入。 |
| BigDecimal | pow(int n) | 返回 BigDecimal其值为 (thisn) ,精确计算功率,精度无限制。 |
| BigDecimal | pow(int n, MathContext mc) | 返回 BigDecimal其值为 (thisn) 。 |
| int | precision() | 返回此 BigDecimal的 精度 。 |
| BigDecimal | remainder(BigDecimal divisor) | 返回 BigDecimal其值为 (this % divisor) 。 |
| BigDecimal | remainder(BigDecimal divisor, MathContext mc) | 返回 BigDecimal其值为 (this % divisor) ,根据上下文设置进行舍入。 |
| BigDecimal | round(MathContext mc) | 返回 BigDecimal根据四舍五入 MathContext设置。 |
| int | scale() | 返回 BigDecimal的 比例 。 |
| BigDecimal | scaleByPowerOfTen(int n) | 返回其数值等于( this * 10 n )的BigDecimal。 |
| BigDecimal | setScale(int newScale) | 返回 BigDecimal其标度为指定值,其值在数值上等于此 BigDecimal 。 |
| BigDecimal | setScale(int newScale, int roundingMode) | 已过时。 应该优先使用方法setScale(int, RoundingMode)来使用该传统方法。 |
| BigDecimal | setScale(int newScale, RoundingMode roundingMode) | 返回 BigDecimal其比例为指定值,其未缩放值通过将此 BigDecimal值乘以或除以适当的10的幂来确定,以保持其总值。 |
| short | shortValueExact() | 将此 BigDecimal转换为 short ,检查是否丢失了信息。 |
| int | signum() | 返回此 BigDecimal的signum函数。 |
| BigDecimal | sqrt(MathContext mc) | 返回 this平方根的 this并根据上下文设置进行舍入。 |
| BigDecimal | stripTrailingZeros() | 返回 BigDecimal ,它在数值上等于此值,但从表示中删除了任何尾随零。 |
| BigDecimal | subtract(BigDecimal subtrahend) | 返回 BigDecimal其值为 (this - subtrahend) ,其比例为 max(this.scale(), subtrahend.scale()) 。 |
| BigDecimal | subtract(BigDecimal subtrahend, MathContext mc) | 返回 BigDecimal其值为 (this - subtrahend) ,根据上下文设置进行舍入。 |
| BigInteger | toBigInteger() | 将 BigDecimal转换为 BigInteger 。 |
| BigInteger | toBigIntegerExact() | 将 BigDecimal转换为 BigInteger ,检查是否丢失了信息。 |
| String | toEngineeringString() | 如果需要指数,则使用工程符号返回此 BigDecimal的字符串表示形式。 |
| String | toPlainString() | 返回此 BigDecimal的字符串表示形式,不带指数字段。 |
| String | toString() | 如果需要指数,则使用科学计数法返回此 BigDecimal的字符串表示形式。 |
| BigDecimal | ulp() | 返回此 BigDecimal的ulp(最后一个单位)的 BigDecimal 。 |
| BigInteger | unscaledValue() | 返回 BigInteger其值是此的 非标度值 BigDecimal 。 |
| static BigDecimal | valueOf(double val) | 转换一个 double成 BigDecimal ,使用 double通过所提供的规范的字符串表示 Double.toString(double)方法。 |
| static BigDecimal | valueOf(long val) | 将 long值转换为 BigDecimal ,其标度为零。 |
| static BigDecimal | valueOf(long unscaledVal, int scale) | 将 long值和 int比例转换为 BigDecimal 。 |



