java - 当我在 Jaspersoft Studio 中除以两个 BigDecimal 变量时,为什么会得到 null?

标签 java jasper-reports bigdecimal

我设置了一些变量。前两个将一个字段的整数值设置为 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/

相关文章:

java - BigDecimal 精度高于 1E22

java - 在Java中,如何在不考虑连续小数位权重的情况下获得数字的前2位小数?

java - 带有 MemoryMappedFile 和中断文件的 Log4j2

java - PMD 多个规则集通过构建,但单个规则集构建失败

java - JTransforms FFT : Difference between even and odd-case

boolean 字段的 Java Bean 规范

java - 使用 JasperReports 呈现任意 XHTML

java - 在数据库中,一列的值为 "0.000000000000"。如何将 "0.000000000000"整体打印出来?

java - Hibernate Search 空间构面查询首先运行 5 次,然后仅返回第 5 个结果

jasper-reports - 编译后的 .jasper 文件放在哪里