当前位置: 首页 > 知识库问答 >
问题:

"非终止小数展开;没有确切的可表示的小数结果"即使除以100也会发生[重复]

苍阳成
2023-03-14

我的java代码在HP-UX hpdev B.11.23 U ia64上运行,有时会产生以下异常:java。算术异常:非终止十进制扩展;没有可精确表示的十进制结果。

导致它的代码:

BigDecimal p_Change = (BigDecimal)record.get("P_CHNG");
p_Change.divide(new BigDecimal(100));

记录是一个简单的sql查询中列值的集合。p_change来自Oracle数据库中的表,其中列为NUMBER(10,2)。

我明白为什么会这样。频率是随机的,有时会用相同的数据进行细分。我只是想知道这是否与硬件有关。

共有1个答案

丁弘新
2023-03-14

你能system.out你p_Change的价值吗?

BigDecimal p_Change = new BigDecimal(Math.PI);
System.out.println(p_Change.divide(new BigDecimal(100)));

// yields this 0.03141592653589793115997963468544185161590576171875

和你们的代码一样只是把p_Change换成π

这个问题可能需要处理你没有进入四舍五入模式。试着使用

p_Change.divide(new BigDecimal(100), BigDecimal.ROUND_HALF_UP); 
 类似资料: