Для этого XSLT:Сохранил количество цифр при обработке вход-> number-> выход во время обработки 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
Прежде всего ... Мне любопытно, почему он внезапно переключается между стандартными и научными обозначениями, когда он выходит eds 6 цифр слева от десятичной точки? Это моя проблема, я хочу избежать научной нотации. После различных других вопросов я обнаруживаю, что, по-видимому, я застрял в заполнении формата.
Но формат-формат также не работает. Несмотря на то, что вывод «s1 plain» доказывает, что число значимых цифр известно процессору (я понимаю, что преобразование в double и назад может потерять точность, но после такого преобразования есть правильное число, поэтому ...?), похоже, не существует способа вывода этого значения в стандартную ненаучную нотацию. Здесь?
Хороший вопрос (+1). См. Мой ответ для решения, которое обеспечивает максимальную точность. –
Спецификация XSLT 2.0 для преобразования в две строки> строка означает, что экспоненциальная нотация должна использоваться, если значение находится за пределами диапазона 1е-6 до 1е + 6. Разумеется, эти точки отсечения совершенно произвольны, но вы не захотите, чтобы 1e215 выписался длинным ... –
Неправильно думать, что «количество важных цифр известно процессору». Если вы хотите узнать больше об используемых алгоритмах, преобразование Саксона основано на этой знаменитой статье: http://portal.acm.org/citation.cfm?id=93559, адаптированной к требованиям спецификации XPath. –