java - BigDecimal 舍入在 Jasper iReport 中无法正常工作

标签 java jasper-reports bigdecimal

我在 iReport 设计中将其定义为变量:

$V{total_ver}.intValue() != 0 ? new BigDecimal((new BigDecimal( $F{TotalVerified}+"").divide( new BigDecimal( $V{total_ver} +"") , 4, RoundingMode.HALF_DOWN )).multiply(new BigDecimal(100))+"")  : new BigDecimal(0) 

它应该显示 90.91,但实际显示为 100.0000。

我在 Java 程序中测试了等效的内容:

total_ver  != 0 ? new BigDecimal((new BigDecimal( TotalVerified+"").divide( new BigDecimal( total_ver +"") , 4, RoundingMode.HALF_DOWN )).multiply(new BigDecimal(100))+"")  : new BigDecimal(0) 

并且它工作正常(显示 90.91),那么为什么表达式无法在 Jasper iReport 中返回正确的值?

最佳答案

TotalVerified 似乎不是字符串,因此构造函数无法设置精度。如果是 double 则不好(应该避免)。当 int 时,精度为 0 位。

new BigDecimal((new BigDecimal( $F{TotalVerified}+"").setScale(2)

如果 TotalVerified 已经是带有“90.91”的字符串,则 java 版本可能会起作用。

关于java - BigDecimal 舍入在 Jasper iReport 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181216/

相关文章:

java - 为什么这个 spring bean 没有初始化?它始终为空。

Java SHA-1 散列一个无符号字节

java - 连接被拒绝: connect,无法连接数据库mysql

java - 如何更改Jasper报告打印名称

java - 新的 BigDecimal(双)与新的 BigDecimal(字符串)

java - 发送 Ctrl-C 到 Java 打开的进程

java - JasperReports PDF 字体名称(jasperreports.properties 中的默认值)

java - DynamicJasper - 如何将子报表添加为列?

android - BigDecimal 在带有本地化的 Android 4.0.3 中给出 NumberFormatException

java - 使用 Struts2 标签格式化数字