XSLT乘法返回不正确的结果

时间:2012-11-08 14:55:30

标签: xslt xslt-1.0

我有以下代码,用于使用xslt1

执行简单的乘法
<observedRate>
<xsl:value-of select="Input * 100"/>
</observedRate>

然而,当Input = 0.0107时,上面返回1.069999999999999999998而不是1.07。

我过去曾经遇到过这个问题一两次,并且通过做类似下面的事情(在这种情况下有效)来设法克服它。

<observedRate>
<xsl:value-of select="( Input div 10) * 1000"/>
</observedRate>

我对这个解决方案有几个问题,即

  1. 它是一个黑客,看起来不太好
  2. 我不相信它可以处理所有可能的值,因为'Input'的值可以是任意数量的小数位
  3. 对于使用xslt1进行乘法运算是否有一个很好的解决方案,它适用于输入变量不是已定义的长度的所有情况?

1 个答案:

答案 0 :(得分:0)

试试这个:

<xsl:value-of select='format-number(Input * 100, "#.00")' />

http://www.w3schools.com/xsl/func_formatnumber.asp

希望这有帮助!