この XSLT の場合:
<xsl:variable name="source0" select="number(num2)"/>
<xsl:variable name="source1" select="number(num3)"/>
s0 plain: <xsl:value-of select="$source0"/>
s1 plain: <xsl:value-of select="$source1"/>
test11: <xsl:value-of select="format-number($source0, '#.#')"/>
test12: <xsl:value-of select="format-number($source0, '#.###############')"/>
test21: <xsl:value-of select="format-number($source1, '#.#')"/>
test22: <xsl:value-of select="format-number($source1, '#.###############')"/>
XML の場合:
<num2>123456.1234</num2>
<num3>1234567.1234</num3>
この出力を取得します(Saxon 9.2、XSLT 2.0を使用)
s0 plain: 123456.1234
s1 plain: 1.2345671234E6
test11: 123456.1
test12: 123456.123399999996764
test21: 1234567.1
test22: 1234567.123399999924004
まず、小数点以下6桁を超えると急に標準表記と科学表記が切り替わるのが気になります。これは私の問題です。科学表記を避けたいのです。他のさまざまな質問の後、どうやらフォーマット番号をどこにでも配置することに固執しているようです。
しかし、 format-number も機能していないようです。「s1plain」の出力は、有効桁数がプロセッサに認識されていることを証明しているという事実にもかかわらず(倍精度に変換して元に戻すと精度が失われる可能性があることは理解していますが、そのような変換後に正しい数値があるため、 ...?)、その値を標準的な非科学的表記法で出力する方法はないようです。ある?