2

xslt1を使用して単純な乗算を実行するための以下のコードがあります

<observedRate>
<xsl:value-of select="Input * 100"/>
</observedRate>

ただし、入力= 0.0107の場合、上記は1.07ではなく1.069999999999999999998を返します。

私は過去にこの問題に1、2回遭遇し、以下のようなことを行うことで問題を克服することができました(この場合は機能します)

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

このソリューションにはいくつか問題があります。

  1. そのハックとあまり見栄えがよくありません
  2. 'Input'の値は小数点以下の桁数になり得ることを考えると、可能なすべての値を処理できるとは確信していません。

それで、入力変数が定義された長さではないすべての場合に機能するxslt1を使用してマルチプルするための優れたソリューションはありますか?

4

1 に答える 1

0

これを試して:

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

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

お役に立てれば!

于 2012-11-08T15:05:43.573 に答える