我的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)。
我明白为什么会这样。频率是随机的,有时会用相同的数据进行细分。我只是想知道这是否与硬件有关。
你能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);
为什么下面的代码会引发如下所示的异常? 例外情况:
代码: 当我输入十进制值时,它抛出一个异常:线程“主”中的异常java.lang.算术异常:非终止十进制扩展;没有确切的可表示的十进制结果。
问题内容: 为什么以下代码会引发如下所示的异常? 例外: 问题答案: 从Java 11 BigDecimal文档: 当为对象提供的精度设置为0(例如MathContext.UNLIMITED)时,算术运算是精确的,不带对象的算术方法也是如此。(这是5之前的版本中唯一支持的行为。) 作为计算精确结果的必然结果,不使用精度设置为0 的对象的舍入模式设置,因此不相关。在除法的情况下,精确的商可以具有无限
问题内容: 我正在对查询进行形式化,以按日期排序提供过去一年中提交的报告数量。我用php获取当前年份和月份: 并执行以下查询:SQL: 而且由于去年只提交了1个结果,因此我只得到了1个结果… 但是我希望结果集显示出来: 那可能吗? 问题答案: 您应该将此表与1..12表保持联接。像这样的东西: SQL Fiddle演示
我参考了这一点,并对值进行了四舍五入,然后我也得到了上述错误。请查找下面提到的代码。提前感谢:
我得到以下例外: 为什么会这样?除法的结果应该是729.75,它有一个终止的十进制扩展(.75)。