大家好,在处理BigDecimal大型数据保留小数时,我没有利用系统自带的setScale()方法,而是自定了两个方法。(备注:我设定的这两个方法不涉及精度问题)
这两个方法在处理有限小数时没问题,怎么在处理无限小数时报错啊?求大神指教
作为一般方法,如果你要保留N位小数
那么就乘以10的N次方取整再除以10的N次方。
如果四舍五入,就乘以10的N次方,再+0.5,再取整,取整再除以10的N次方。
首先,看不到你的 220 行的代码,所以没办法判断。
其次,BigDecimal 在计算过程中不用截断,计算完成后对最总的结果使用 b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 再取一次数据得到一个新的 BigDecimal 对象返回。