在JasperReport上未定义句柄划分

时间:2019-05-01 21:34:52

标签: jasper-reports

我在JasperReport 6.60中有变量,该变量正在执行一些加权平均,并且我尝试通过将其传递给IF条件来避免被零除,但是它仍然会产生“除法未定义”

比方说,我想在一个名为([Group] round)的组上显示一个变量$ V {weighted_avg},该组由两个回合组成。在第一轮中,$ V {divisor}为零(0),但在第二轮中,$ V {divisor}不为零

变量$ V {weighted_avg}包含表达式:

IF($V{divisor}.compareTo(BigDecimal(0.00)) == 1, $V{dividend}.divide($V{divisor}, new MathContext(4)), null)

计算时,该表达式将产生错误“除法未定义”。

但是,如果我这样做:

IF($V{divisor}.compareTo(BigDecimal(0.00)) == 1, "> 0", "< 0")

结果正确显示。

所有变量均为Bigdecimal,我希望当$ V {divisor}为零时,$ V {weighted_avg}显示为“空”

1 个答案:

答案 0 :(得分:0)

内置的IF函数对它的所有参数求值,您需要使用Java三元运算符,以便仅对与匹配分支相对应的表达式求值。

$V{divisor}.compareTo(BigDecimal(0.00)) == 1 ? $V{dividend}.divide($V{divisor}, new MathContext(4)) : null