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

发票管理软件PDF价格格式化:保留Double数值两位小数

发票价格保留两位小数的代码修改方案

问题描述

现有发票管理软件生成PDF时,产品价格会原样显示所有输入的小数位(如输入12,36789 €,PDF显示12,36789 €),需要修改代码让价格始终仅显示前两位小数,期望显示为12,36 €。当前控制价格显示的代码为:

$V{Formatter}.format(new Double($F{importoUnitario}.replaceAll(",",".")))+" "+$P{valutaSimbolo}

修改方案

方案1:调整全局Formatter的格式模式

如果$V{Formatter}是项目中预定义的格式化对象,直接修改它的格式规则为保留两位小数。例如将Formatter初始化代码改为:

$V{Formatter} = new DecimalFormat("#0.00");
// 若需适配逗号作为小数分隔符的地区,可指定对应Locale
$V{Formatter} = DecimalFormat.getNumberInstance(Locale.GERMANY); // 示例,根据实际地区调整
((DecimalFormat)$V{Formatter}).applyPattern("#0.00");

修改后原代码无需改动,Formatter会自动将数值格式化为两位小数。

方案2:直接在代码中指定小数位格式化

如果不想修改全局Formatter,可直接替换原代码中格式化数值的部分,使用DecimalFormat强制保留两位小数,同时适配逗号小数分隔符:

new DecimalFormat("#0.00").format(new Double($F{importoUnitario}.replaceAll(",","."))).replace(".",",") + " " + $P{valutaSimbolo}

代码说明:

  1. $F{importoUnitario}.replaceAll(",","."):将输入的逗号小数分隔符转为点,符合Double类型的解析要求
  2. new DecimalFormat("#0.00").format(...):将数值格式化为保留两位小数的字符串(默认用点做小数分隔符)
  3. .replace(".",","):将格式化后的点换回逗号,匹配用户地区的显示习惯
  4. 后续拼接空格和货币符号的逻辑保持不变

验证效果

修改后,输入12,36789时,会被格式化为12,36,最终显示为12,36 €,满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:05:24