[XSL] precision des nombres

precision des nombres [XSL] - XML/XSL - Programmation

Marsh Posté le 31-10-2005 à 09:37:05    

Bonjour,
 
J'utilise comme parseur XSL : XALAN-J.
 
Je dois transformer des chiffres tel que  : 4.1612E-8 en 0.000000041612,
pour cela j'utilise cette fonction :
 

Code :
  1. <xsl:template name="Scientific">
  2. <xsl:param name="Num"/>
  3. <xsl:if test="boolean(number(substring-after($Num,'E')))">
  4.  <xsl:variable name="multi2" select="1"/>
  5.  <xsl:call-template name="Scientific_Helper">
  6.   <xsl:with-param name="m" select="substring-before($Num,'E')"/>
  7.   <xsl:with-param name="e" select="substring-after($Num,'E')"/>
  8.   <xsl:with-param name="multi" select="$multi2"/>
  9.  </xsl:call-template>
  10. </xsl:if>
  11. <xsl:if test="not(boolean(number(substring-after($Num,'E'))))">
  12.  <xsl:value-of select="round($Num)"/>
  13. </xsl:if>
  14. </xsl:template>
  15. <!-- Converti une notation scienfique en notation standard -->
  16. <xsl:template name="Scientific_Helper">
  17. <xsl:param name="m"/>
  18. <xsl:param name="e"/>
  19. <xsl:param name="multi"/>
  20. <xsl:choose>
  21. <xsl:when test="$e = 0 or not(boolean($e))">
  22.  <xsl:value-of select="$m * $multi"/>
  23. </xsl:when>
  24. <xsl:when test="$e &gt; 0">
  25.  <xsl:call-template name="Scientific_Helper">
  26.   <xsl:with-param name="m" select="$m"/>
  27.   <xsl:with-param name="e" select="$e - 1"/>
  28.   <xsl:with-param name="multi" select="$multi * 10"/>
  29.  </xsl:call-template>
  30. </xsl:when>
  31. <xsl:when test="$e &lt; 0">
  32.  <xsl:call-template name="Scientific_Helper">
  33.   <xsl:with-param name="m" select="$m"/>
  34.   <xsl:with-param name="e" select="$e + 1"/>
  35.   <xsl:with-param name="multi" select="$multi div 10"/>
  36.  </xsl:call-template>
  37. </xsl:when>
  38. </xsl:choose>
  39. </xsl:template>


 
Mais à cause d'un manque de precision j'obtiens cela : 0.00000004161200000000001
Tout ce qui est gras est faut !
Comment puis je faire pour augmenter la precision  ?
 
Merci

Reply

Marsh Posté le 31-10-2005 à 09:37:05   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed