在 freemarker 模板中,`double` 类型本身不保存小数位数信息,需通过格式化指令显式指定两位小数输出,推荐使用 `${value?string('0.00')}` 实现统一、可靠的数值格式化。
当使用 OpenHTMLToPDF 渲染 PDF 时,常遇到数值字段显示不一致的问题:字符串 "1200.00" 能原样输出,但 Double 类型的 100.00 却被渲染为 100 —— 这并非数据丢失,而是 FreeMarker 默认采用简洁数字格式(如 100.0 → 100),省略了末尾零和小数点。
要强制保留两位小数,必须显式调用内建格式化函数:
${amount?string('0.00')}
${price?string('#,##0.00')} ✅ 
⚠️ 注意事项:
<#macro money v>${(v!0)?string('0.00')}#macro>
<@money v=total />通过 ?string('0.00'),你能在 OpenHTMLToPDF 输出中稳定获得符合财务/报表要求的两位小数格式,兼顾准确性与专业呈现。