【问题标题】:IReport BigDecimal format "R$ #,##0.00" Monetary Value in ChartsIReport BigDecimal 格式 "R$ #,##0.00" 图表中的货币价值
【发布时间】:2016-04-23 05:34:44
【问题描述】:

我有一个 JasperReports 图表,在报告中,field $F{soma}BigDecimaldatabase MySQLDecimal(19,2)。我正在使用这个sql:select SUM(valor) as soma 来获取字段$F{soma}。 只打印$F{soma} 我得到的标签如下:1.500,20。没有格式表达式。我需要的是显示如下标签:"R$ 1,520.20"

试过这个:

new java.text.DecimalFormat("R$ #,##0.00").format(Double.valueOf($F{soma}))

但没有成功,所以如果有人能给我指个方向,我会很感激的。

没有发布图片的声誉,但下面的链接是关于 field 类型的..

MySQL 中的字段:

正在打印的标签(没有格式表达式)

【问题讨论】:

  • 不成功是什么意思?,显示jrxml(字段声明以及如何设置值),完全错误

标签: jasper-reports bar-chart jfreechart bigdecimal


【解决方案1】:

如果您的 $F{soma}BigDecimal 字段,则只需编写

new java.text.DecimalFormat("R$ #,##0.00").format($F{soma});

【讨论】:

  • 我试过了,它给了我这个:Error filling print... java.lang.String cannot be cast to java.lang.Number java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
  • 但是参数是BigDecimal
  • BigDecimal 在数据库和IReport 图表中。
  • 见我的sql:select SUM(valor) as soma...也许有帮助。
  • IReport 是否可以将soma 作为字符串“检索”,即使它是BigDecimal?我问是因为错误消息。
【解决方案2】:

使用具有正确CurrencyNumberFormat 实例来格式化值。如果默认的Locale 给你带来了问题,

  • NumberFormat.getCurrencyInstance(Locale inLocale) 与您想要的Locale 一起使用,例如:

    NumberFormat.getCurrencyInstance(Locale.US);
    
  • 使用NumberFormat.getInstance()setCurrency()设置你想要的Currency,例如:

    NumberFormat f = NumberFormat.getCurrencyInstance();
    f.setCurrency(Currency.getInstance(…));
    

【讨论】:

  • 经过一段时间的尝试后,我使用新的java.text.DecimalFormat("R$ #,##0.00").format($F{soma}); 解决了这个问题,但不确定是什么导致了错误。不过,谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多