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

XSLT精确小数格式兼容问题求助:需适配两种数值场景

XSL format-number 兼容0值和千分位格式的解决方案

问题描述

输入XML包含两种数值场景:

<sets>
  <set>
    <total>0.00</total>
  </set>
  <set>
   <total>5787.43</total>
  </set>
</sets>

原使用format-number(number($cur_value), '###,###.00')时,0.00会输出$.00(缺失整数位0);改用###,###0.00时,5787.43会丢失千分位变成$5787.43。需要实现两种场景都符合预期的格式化:0.00输出$0.00,5787.43输出$5,787.43。

解决方案

使用#,##0.00作为格式字符串即可同时覆盖两种场景:

<xsl:value-of select="concat('$', format-number(number($cur_value), '#,##0.00'))"/>

格式说明

  • #:表示可选数字,不存在则不显示,用于千分位分隔前的高位数字;
  • 0:表示强制显示数字,即使数值为0也会展示整数位的0;
  • ,##:指定每三位添加千分位分隔符的规则;
  • .00:强制保留两位小数。

完整示例代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/sets">
    <xsl:for-each select="set">
      <xsl:variable name="cur_value" select="total"/>
      <xsl:value-of select="concat('$', format-number(number($cur_value), '#,##0.00'))"/>
      <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

输出结果

$0.00
$5,787.43

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:45:37