Pour cette XSLT:Retain nombre de chiffres au cours du traitement entrées-> number-> sortie pendant le traitement 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>
je reçois cette sortie (en utilisant 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
Tout d'abord ... Je suis curieux de savoir pourquoi il change soudainement entre la notation standard et scientifique quand il eds 6 chiffres à gauche de la décimale? C'est mon problème, je veux éviter la notation scientifique. Après diverses autres questions, je découvre apparemment que je suis coincé avec la mise en format-nombre partout.
Mais le format-nombre ne semble pas fonctionner non plus. En dépit du fait que la sortie de "s1 plain" prouve que le nombre de chiffres significatifs est connu du processeur (je comprends à propos de la conversion en double et en arrière peut perdre de précision, mais il y a le bon nombre après une telle conversion, ...?), il semble qu'il n'y ait aucun moyen de produire cette valeur en notation standard non scientifique. Y a-t-il?
Bonne question (+1). Voir ma réponse pour une solution qui atteint le maximum de précision. –
La spécification XSLT 2.0 pour la conversion double> chaîne indique que la notation exponentielle doit être utilisée si la valeur est en dehors de la plage 1e-6 à 1e + 6. Ces points de coupure sont complètement arbitraires, bien sûr, mais vous ne voudriez pas que 1e215 soit écrit à la main ... –
Il est faux de penser que "le nombre de chiffres significatifs est connu du processeur". Si vous voulez en savoir plus sur les algorithmes utilisés, la conversion de Saxon est basée sur ce fameux document: http://portal.acm.org/citation.cfm?id=93559 adapté aux exigences de la spécification XPath. –