1. 什么是BigDecimal?
在Java中,BigDecimal是一个基础的数据结构,它常常用于需要高精度计算的应用场景,比如表示一个商品的价格、或者是计算商品的购买价格中都经常用到BigDecimal,因为这些数值要求高精度,如果我们使用的是Double、Float等数据类型在一定场景下会导致数值出现一些误差。比如现在有一下代码:
public class BigDecimalAnalyze {
public static void main(String[] args) {
double price1=20.15;
float price2=40.10F;
BigDecimal bigDecimal1=new BigDecimal(price1);
BigDecimal bigDecimal2=new BigDecimal(price2);
//输出实际值
System.out.println(bigDecimal1);
System.out.println(bigDecimal2);
}
}
//控制台输出
20.14999999999999857891452847979962825775146484375
40.09999847412109375
从以上结果中可以分析出,double、float类型表示的数值比原始值稍微偏小一些,虽然现在感觉差的不是特别多,但是万一到时候订单到达比如100W的时候,所差的金额就特别多了,这在实际项目中肯定是不允许的,如果使用BigDecimal计算就能避免以上问题。
2. BigDecimal有哪几种构造方法式?
通过查看源码可以分析出BigDecimal共有以上17中构造方法,但是如果涉及到金额的计算建议使用String入参进行构造。
3. BigDecimal的简单使用
在实际项目中使用的比较多的就是BigDecimal的运算,比如常规的加、减、乘、除、取余等。
3.1 BigDecimal
加法运算底层实现方法:
public BigDecimal add(BigDecimal augend) {
if