1. BigDecimal

- BigDecimal详解
-
-
BigDecimal
是Java中用于高精度计算的类,主要用于处理对精度要求较高的浮点数运算,例如货币计算、科学计算等领域。在金融领域,由于对精度要求极高,不能使用基本数据类型float
和double
,因为它们在进行计算时可能会出现精度丢失的问题。而BigDecimal
可以准确地表示和计算浮点数,避免了精度丢失。
-
-
BigDecimal(String val)
:通过字符串构造BigDecimal
对象,这是推荐的构造方式,因为可以准确地表示一个数值而不会出现精度问题。例如,BigDecimal bd = new BigDecimal("12.345");
。
-
-
add(BigDecimal augend)
:加法运算。例如,BigDecimal result = bd1.add(bd2);
,其中bd1
和bd2
是两个BigDecimal
对象,result
为它们的和。subtract(BigDecimal subtrahend)
:减法运算。multiply(BigDecimal multiplicand)
:乘法运算。divide(BigDecimal divisor)
:除法运算。在进行除法运算时,可以通过指定MathContext
对象来控制精度和舍入模式。例如,BigDecimal result = bd1.divide(bd2, MathContext.DECIMAL128);
,这里使用MathContext.DECIMAL128
表示使用 128 位精度进行计算。setScale(int scale, RoundingMode roundingMode)
:设置小数位数和舍入模式。例如,BigDecimal rounded = bd.setScale(2, RoundingMode.HALF_UP);
表示将bd
保留两位小数,采用四舍五入的舍入模式。
-
-
RoundingMode.HALF_UP
:四舍五入。RoundingMode.DOWN
:直接舍去。RoundingMode.UP
:直接进位。
import java.math.BigDecimal;
public class BigDecimalExample {public static void main(String[] args) {BigDecimal price = new BigDecimal("12.56");BigDecimal quantity = new BigDecimal("3");BigDecimal total = price.multiply(quantity);System.out.println("总价为:" + total);}
}
-
-
- 以下是一个使用
BigDecimal
进行货币计算的示例:
- BigInteger详解
-
-
BigInteger
是Java中用于处理大整数的类。当需要处理超出基本数据类型long
范围的整数时,可以使用BigInteger
。它可以表示任意大小的整数,并且提供了丰富的数学运算方法。
-
-
BigInteger(String val)
:通过字符串构造BigInteger
对象。例如,BigInteger bi = new BigInteger("12345678901234567890");
。
-
-
add(BigInteger val)
:加法运算。subtract(BigInteger val)
:减法运算。multiply(BigInteger val)
:乘法运算。divide(BigInteger val)
:除法运算,返回商。remainder(BigInteger val)
:求余数。pow(int exponent)
:求幂运算。例如,BigInteger result = bi.pow(3);
表示计算bi
的三次方。
import java.math.BigInteger;
public class BigIntegerExample {public static void main(String[] args) {BigInteger num1 = new BigInteger("12345678901234567890");BigInteger num2 = new BigInteger("98765432109876543210");BigInteger sum = num1.add(num2);System.out.println("两数之和为:" + sum);}
}
-
-
- 以下是一个使用
BigInteger
进行大整数计算的示例: