📜  红宝石 | BigDecimal ()函数(1)

📅  最后修改于: 2023-12-03 15:27:28.342000             🧑  作者: Mango

红宝石 | BigDecimal()函数

简介

BigDecimal是Java中用于精确计算的类,适用于需要精确计算的商业/金融计算。由于计算机底层存储数字时使用二进制表示,因此在进行十进制小数计算时,可能会丢失精度。BigDecimal类可以很好地解决这个问题,提供了高精度计算的方法。

使用BigDecimal()函数
创建BigDecimal对象

在使用BigDecimal类进行计算时,需要先创建BigDecimal对象。有多种方法可以创建BigDecimal对象:

BigDecimal a = new BigDecimal("123.456"); //基于字符串创建
BigDecimal b = new BigDecimal(123.456); //基于double类型创建
BigDecimal c = BigDecimal.valueOf(123.456); //基于double类型创建
  • 基于字符串创建时,字符串中可以包含科学计数法、负号等符号。
  • 基于double类型创建时,可能会丢失精度。因此推荐使用基于字符串创建的方法。
  • BigDecimal.valueOf()方法是一个静态方法,可以根据double类型创建BigDecimal对象。
进行高精度计算
BigDecimal a = new BigDecimal("5.5");
BigDecimal b = new BigDecimal("6.6");

//加法
BigDecimal c = a.add(b);

//减法
BigDecimal d = a.subtract(b);

//乘法
BigDecimal e = a.multiply(b);

//除法,除不尽时抛出异常
BigDecimal f = a.divide(b);

//除法,四舍五入,scale为小数点后保留的位数
BigDecimal g = a.divide(b, 2, RoundingMode.HALF_UP);

//取余数
BigDecimal h = a.remainder(b);

//取反
BigDecimal i = a.negate();
  • add():加法
  • subtract():减法
  • multiply():乘法
  • divide():除法,除不尽时抛出异常
  • divide(scale, RoundingMode):除法,四舍五入,scale为小数点后保留的位数
  • remainder():取余数
  • negate():取反
比较大小

可以使用compareTo()方法比较大小。返回值如下:

  • -1:小于
  • 0:等于
  • 1:大于
BigDecimal a = new BigDecimal("5.5");
BigDecimal b = new BigDecimal("6.6");

int result = a.compareTo(b);
其他方法

还有其他的一些方法,例如:

  • abs():取绝对值
  • max(), min():求最大、最小值
  • intValue(), longValue(), floatValue(), doubleValue():将BigDecimal转换为int、long、float、double类型。
总结

BigDecimal类是Java中用于精确计算的类,对于商业/金融计算非常有用。在进行小数计算时,可能会丢失精度,因此需要使用BigDecimal类进行高精度计算。创建BigDecimal对象时,可以基于字符串或double类型等方式。在计算过程中,可以进行加、减、乘、除、取余数、取反等操作。在比较大小时,可以使用compareTo()方法。使用BigDecimal类可以大大提高计算的精度,特别适用于涉及到货币计算等场景。