有没有办法为数值设置默认输出格式,特别是限制xs:decimal的小数部分的长度?
示例:
<xsl:sequence select="xs:decimal('7.96062992125984252') * xs:decimal('0.33333333')" />
在我的系统上,使用Saxon-HE 9.7.0.5,输出为:
2.6535432805511811024671916
另一个问题 - 我的印象是xs:小数部分限制为18位,但上面的值为25。
如何为输出转换xs:decimal值?
我想将所有值限制为最多18位数。
答案 0 :(得分:1)
xs:decimal中的位数是依赖于实现的,最小值为18.Saxon使用任意精度(Java中的BigDecimal类)。
无法更改默认的十进制到字符串转换,但您可以使用format-number函数进行显式转换(而不是依赖于默认转换)(例如,format-number($value, '0.00')
顺便说一句,在XSLT 2.0中,一个看起来像xs:decimal(包含一个小数点而不是&#34; e&#34;)的数字是xs:decimal,所以你的xsl:sequence可以写成:
<xsl:sequence select="7.96062992125984252 * 0.33333333" />
它仍然会做xs:decimal multiplication。