我的java代码在HP-UX hpdev B.11.23 U ia64上运行,有时会产生以下异常: java.lang.ArithmeticException:非终止十进制扩展;没有确切的可表示的十进制结果。
导致它的代码:
BigDecimal p_Change = (BigDecimal)record.get("P_CHNG");
p_Change.divide(new BigDecimal(100));
记录很简单sql query.p_change中的列值集合来自Oracle数据库中的表,其中列为NUMBER(10,2)。
我明白为什么会发生这种情况。频率是随机的,有时会用相同的数据进行细分。我只是想知道这是否与硬件有关。
答案 0 :(得分:0)
你能为p_Change的值做一个system.out吗?
BigDecimal p_Change = new BigDecimal(Math.PI);
System.out.println(p_Change.divide(new BigDecimal(100)));
// yields this 0.03141592653589793115997963468544185161590576171875
它与您的代码完全相同,仅用p
代替p_Change这个问题可能不得不处理你没有进入舍入模式。尝试使用
p_Change.divide(new BigDecimal(100), BigDecimal.ROUND_HALF_UP);