为了能精确表示、计算浮点数,由于在运算的时候,float类型和double很容易丢失精度所以Java提供了BigDecimal类;该类提供了大量的构造器 用于创建BigDecimal对象,包括把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。由于在商业计算中,对数字精度要求较高,必须使用 BigInteger 类和 BigDecimal 类,它支持任何精度的定点数,可以用它来精确计算货币值。由于在运算的时候,float类型和double很容易丢失精度,所以一般不用来做计算货币。
BigDecimal类成员方法:
- public BigDecimal add(BigDecimal augend):加法
- public BigDecimal subtract(BigDecimal subtrahend):减法
- public BigDecimal multiply(BigDecimal multiplicand):乘法
- public BigDecimal divide(BigDecimal divisor):除法
- public BigDecimal abs(BigDecimal abs):绝对值
精度丢失,看程序结果:
1、public BigDecimal add(BigDecimal augend):加法
用BigDecimal相加方法就不会出现精度丢失的问题出现;
2、 public BigDecimal subtract(BigDecimal subtrahend):减法
3、 public BigDecimal multiply(BigDecimal multiplicand):乘法
4、 public BigDecimal divide(BigDecimal divisor):除法
5、 public BigDecimal abs(BigDecimal abs):绝对值
结果:
常用的构造器:
1、 BigDecimal(char[] in):将BigDecimal的字符数组表示形式转换为 BigDecimal,接受与 BigDecimal(String) 构造方法相同的字符序列。
结果:
2、 BigDecimal(double val):将double转换为BigDecimal,后者是double的二进制浮点值准确的十进制表示形式。
3、 BigDecimal(int val):将int转换为BigDecimal。