使用 XSLT 格式数字函数将值舍入到小数点后 2 位的金额



我需要将货币金额格式化为小数点后 2 位,即使金额实际上有 4 位小数。最后 2 位小数应始终为 0。

举个例子:

2480130 应格式化为 2480100

的长度应保持不变,但最后 2 位数字应始终为零以向下舍入货币值。

目前我正在使用以下 XSLT:

<xsl:value-of select="format-number((Amounts/NetUnitPrice * 10000),'############00')"/>

但这不会将最后 2 位数字转换为 0。

有关格式编号函数的一些文档可以在这里找到 https://www.w3schools.com/xml/func_formatnumber.asp

我可以使用什么模式来使用格式编号函数来完成此操作?非常重要的是,货币价值不能以任何方式改变,除了四舍五入到小数点后 2 位。我应该为此使用其他函数吗?

使用这个。它将最后 2 位数字替换为 00。

<xsl:value-of select="replace(format-number((Amounts/NetUnitPrice* 10000),'############00'), '..$', '00')"/>

我设法找到了一个解决方案,通过将数量缩短 2 位小数并在值末尾连接"00"。这也正确地向上/向下舍入值。请参阅下面的代码:

<xsl:value-of select="concat(format-number((Amounts/NetUnitPrice * 100),'#############0'), '00')"/>

请注意,XSLT 1.0 中的 format-number(( 没有明确指定使用的舍入算法。它是通过参考JDK 1.1规范来定义的(现在很难得到(,但是Java提供了舍入算法的选择,XSLT 1.0没有说明使用哪种算法。因此,最好不要依赖format-number()四舍五入到零,即使这是您当前的实现所做的。

最新更新