我在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}显示为“空”
答案 0 :(得分:0)
内置的IF
函数对它的所有参数求值,您需要使用Java三元运算符,以便仅对与匹配分支相对应的表达式求值。
如
$V{divisor}.compareTo(BigDecimal(0.00)) == 1 ? $V{dividend}.divide($V{divisor}, new MathContext(4)) : null