2017-04-22 7 views
1

xs:decimalの小数部分の長さを制限するために、数値のデフォルトの出力書式を設定する方法はありますか?xs:decimal値のXSLT出力書式を制御する方法は?

例:私のシステムで

<xsl:sequence select="xs:decimal('7.96062992125984252') * xs:decimal('0.33333333')" /> 

、サクソン-HE 9.7.0.5を使用して、出力は次のとおりです。

2.6535432805511811024671916 

追加の質問 - 私は印象XS下にあった10進が限られています小数部分は18桁ですが、上記の値は25です。

出力のxs:decimal値はどのように変換されますか?

すべての値を最大18桁に制限したいと思います。

+0

すぐに使えるバージョンは次のようになります:あなた自身の関数 'printDecimal'を書いてください。この関数の本体の一部は 'format-number($ decParam、 '#。##########')' [丸めは既に含まれています]です。 seperator文字を変更する場合は(さらに)、 'decimal-format'を参照してください。 – uL1

答えて

1

xs:decimalの桁数は実装依存で、最小値は18です.Saxonは任意精度(JavaではBigDecimalクラス)を使用します。

あり、デフォルト進ストリングへの変換を変更する方法はありませんが、例えば、(format-number($value, '0.00')をフォーマット-number関数を使用して(デフォルトの変換に頼るとは反対に)あなたが明示的な変換を行うことができます。

XSLT 2.0 XSのように見える数で尚

、10進(小数点なし「e」を含んでいる)はXSです:小数ので、あなたのxsl:シーケンスを書くことができます。

<xsl:sequence select="7.96062992125984252 * 0.33333333" /> 

とまだxs:10進数の乗算を行っています。

関連する問題