Для этого 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 цифр слева от десятичного знака?Это моя проблема, я хочу избежать научной нотации.После множества других вопросов я обнаружил, что, очевидно, я застрял в том, чтобы везде указывать число формата.
Но форматное число тоже не работает.Несмотря на то, что вывод "s1 plain" доказывает, что процессору известно число значащих цифр (я понимаю, что преобразование в double и обратно может потерять точность, но после такого преобразования есть правильное число, поэтому...?), кажется, нет способа вывести это значение в стандартной ненаучной записи.Есть ли?