1.BigDecimal类
float和double类型设计的主要目标是为了科学计算和工程计算。它们主要用于执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。它们没有提供完全精确的计算结果,所以不应该被用于要求精确结果的场合。但是,在商业计算中往往要求结果精确,这时候BigDecimal就派上大用场啦。 BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
2.构造器和方法
1.BigDecimal(int) 创建一个具有参数所指定整数值的对象。
2.BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 【不推荐使用】
3.BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
4.BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。【推荐使用】
当double必须用作BigDecimal的构造源时,可以使用Double.toString(double)转成String,然后使用String构造方法,或使用BigDecimal的静态方法valueOf(),如下:
下面看看一般的方法和此方法计算的区别
注意!
如果进行除法运算的时候,结果不能整除,带有有余数,这个时候就会报java.lang.ArithmeticException: ,这边我们要避免这个错误产生,在进行除法运算的时候,针对可能出现的小数产生的计算,在divide方法中除数后面必须要多传两个参数:divide(除数,保留小数点后几位小数,舍入模式)。