Java中的BigDecimal
- BigDecimal的简单介绍
- BigDecimal的构造方法
- BigDecimal常用方法
- BigDecimal格式化
- BigDecimal使用常见问题分析
-
- 不建议使用构造方法:BigDecimal(double)
- 除法的时候出现异常
BigDecimal的简单介绍
- Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。
- 在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。
- BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
Double.valueOf(String)和Float.valueOf(String)会丢失精度,所以开发中面对商业数据需要确保精度不丢失。
BigDecimal的构造方法
BigDecimal一共有4个构造方法
- BigDecimal(int)
创建一个具有参数所指定整数值的对象。 - BigDecimal(double)
创建一个具有参数所指定双精度值的对象。(不建议采用,原因可参考下文——BigDecimal使用常见问题分析) - BigDecimal(long)
创建一个具有参数所指定长整数值的对象。 - BigDecimal(String)
创建一个具有参数所指定以字符串表示的数值的对象。
BigDecimal常用方法
-
public BigDecimal add(BigDecimal value);
BigDecimal对象中的值相加,返回BigDecimal对象 -
public BigDecimal subtract(BigDecimal value);
BigDecimal对象中的值相减,返回BigDecimal对象 -
public BigDecimal multiply(BigDecimal value);
BigDecimal对象中的值相乘,返回BigDecimal对象 -
public BigDecimal divide(BigDecimal value);
BigDecimal对象中的值相除,返回BigDecimal对象 -
public int compareTo(BigDecimal val);
BigDecimal对象中的值比大小,返回int类型结果
BigDecimal bigDecimal = new BigDecimal("2.2");
BigDecimal bigDecimalNew = new BigDecimal("2.5");
int c = bigDecimal.compareTo(bigDecimalNew);
-1,表示bigDecimal 小于bigDecimalNew ;
0,表示bigDecimal 等于bigDecimalNew ;
1,表示bigDecimal 大于bigDecimalNew ;
- public double doubleValue();
将BigDecimal对象中的值转换成单精度数 - publ