我设置了一些变量。前两个将一个字段的整数值设置为 BigDecimal:
$V{Active Unit}.valueOf( $F{Price Qty} )
$V{Reg Unit}.valueOf( $F{Reg Retail Unit} )
我创建的接下来的两个变量然后将字段除以该变量。 (此时我发现 1.00 美元的单价 2 显示为 0.50)。这些返回 NULL!
$F{Price}.divide($V{Current Unit Price})
$F{Reg Retail}.divide($V{Regular Unit Price})
然后,我将两个新创建的变量相减(这是为了找出我的折扣商品 Markdown 0.75 - 0.50 是每个商品的 0.25 Markdown )。这也返回 NULL!
$F{Reg Retail}.divide($V{Regular Unit Price})
你知道我做错了什么吗?我对java知之甚少,我通过Jaspersoft Studio使用它。根据我所读到的内容,我相信我的解释是正确的。大家有什么想法吗?
最佳答案
我相信你必须这样做:.valueOf($F{Price Qty}.doubleValue())
。您可能想做的另一件事是检查 NULL,如下所示: ($F{myField} != null) ? $F{myField}.doSomething() : null
。这样,如果未设置该值,您的代码将知道如何处理该字段的值为 null。
更新
如果所需的值为 BigDecimal
,但该值是其他数字类型(即 Integer),则必须在调用 divide()
方法之前将该值转换为 BigDecimal
:
new BigDecimal($F{var1}).divide(new BigDecimal($F{var2}))
像上面这样的东西应该可以工作。
关于java - 当我在 Jaspersoft Studio 中除以两个 BigDecimal 变量时,为什么会得到 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841253/