xml - XSL - 舍入/格式数字问题

我正在尝试从我的 xml 中获取数字的值到 2 dec 位。

XML:<Quantity>0.0050</Quantity>

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

但是 XSL 似乎对此值有问题并输出 0.00在页面的一个区域和 0.01在另一个。当然在这种情况下最好有0.01。各个领域的输出。

另一个区域的值为 4.221然而 XSL 正在输出 4.23 .

我确实意识到 format-number作为一种将数字转换为字符串的方法。

不知道如何解决这个问题。


编辑:

好吧,经过一番折腾,我发现这是可行的:

<xsl:value-of select='format-number( round(100*$quantity) div 100 ,"##0.00" )' />

通过 website

正如这个人提到的,XSL 使用“银行家四舍五入”来四舍五入到偶数而不是更大的数字。

这个解决方案看起来并不优雅,它意味着向已经庞大而复杂的 XSL 文件添加大量额外的函数。我肯定错过了什么吗?

最佳答案

不知道为什么格式会如此不一致,但从内存来看,它的规范是......复杂的。

同时,您可以使用 round函数(ref)。这并不完美,但很实用。如果您需要特定数量的 sig figs,您可以使用 THE POWER OF MATHS! 并执行以下操作:

<xsl:value-of select="round(yournum*100) div 100"/>

https://stackoverflow.com/questions/3805248/

相关文章:

python - 如何使用 Python 的 optparse 格式化位置参数帮助?

java - 用科学计数法格式化 double 值

python - 将长数字格式化为字符串

c - 打印 printf 中正数的前导 '+'

date - 如何使用 PowerShell 将 'date-1' 格式化为 mm-dd-yyyy?

formatting - d3.js:tickformat - 添加一个 % 符号而不乘以 100

c - printf 中的可变大小填充

java - 只想看到 Allman 样式代码并保存 K&R 样式代码

c++ - 如何使用boost将日期时间格式化为字符串?

image - 子图的垂直对齐 LATEX