You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jasper Report中显示带印度卢比符号及两位小数的金额

解决Jasper Report印度卢比格式显示问题

方案1:在Jasper模板中直接配置格式(推荐)

报表格式逻辑交给模板控制更合理,步骤如下:

  • 在Jasper模板里,选中金额对应的文本字段,设置文本字段表达式为$F{totalAmount}(确保字段为数据库查询出的numeric类型)
  • 打开该文本字段的属性面板,找到格式模式(Pattern),输入¤ #,##0.00:
    • ¤会根据Locale自动替换为对应货币符号
    • #,##0.00确保保留两位小数并添加千位分隔符
  • 后端填充报表时传入印度Locale:
    JasperPrint jasperPrint = JasperFillManager.fillReport(
        jasperReport, 
        parameters, 
        connection,
        new JRParameter[]{JRParameter.REPORT_LOCALE, new Locale("en", "IN")}
    );
    
    也可以直接在模板的报表属性中设置Locale为en_IN,让模板默认使用印度区域格式。

方案2:自定义DecimalFormat硬编码卢比符号

如果不想依赖Locale配置,直接构造带₹的格式化字符串:

import java.text.DecimalFormat;

// 自定义格式:卢比符号 + 千位分隔 + 两位小数
DecimalFormat rupeeFormat = new DecimalFormat("₹ #,##0.00");
parameters.put("TotalAmount", rupeeFormat.format(requestfortieuphotels.getTotalAmount()));

这种方式直接指定符号,不会出现"Rs"替代₹的问题。

补充:解决数据库numeric显示一位小数的问题

数据库中numeric类型需指定精度和小数位数,例如修改金额列定义:

ALTER TABLE your_table ALTER COLUMN total_amount TYPE numeric(12, 2);

这样存储和查询时都会保留两位小数,避免后续处理出现单小数位的情况。

内容的提问来源于stack exchange,提问作者Prabhanshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:39:54