当页面或者控制台出现如下图问题
编译:非终止小数扩展;没有可精确表示的十进制结果
根据编译的提示可知,关于精确度和小数的问题一般来说都是由Double和BigDecimal引起导致精确度基本都是小数位
问题。
解决问题:
因为BigDecimal类型的计算需要使用divide函数,没有指定精确到小数点后几位造成的,导致不能整除而出现无限循环,这时候查看divide方法
//乘法
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
//除法
public BigDecimal multiply(BigDecimal multiplicand)
总体来说:设置保留小数点的个数,以避免使用multiply方法导致小数点无限循环个数。