Announcement

Collapse
No announcement yet.

format-number() und sehr große Zahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • format-number() und sehr große Zahlen

    Hallo zusammen.

    ich hab ein Problem mit der Funktion format-number in Verbindung mit großen Zahlen.

    Folgende Konstellation:
    Zahlen sollen in das deutsche Zahlenformat formatiert werden und in einer pdf-Datei ausgegeben werden. Die Zahlen, die zu formatieren sind, können sehr groß sein, d.h. bis zu 15 Vorkommastellen und 3 Nachkommastellen.

    Bei einer Zahl mit 13 Vorkommastellen klappt alles noch einwandfrei. Aber dann beginnen die "unschärfen"

    Hier meine XSL-Datei (Ausschnitt):

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
    <xslutput method="xml" encoding="ISO-8859-1" standalone="yes"/>
    <xsl:decimal-format name="de" decimal-separator="," grouping-separator="."/>

    ....

    <fo:block>Zahl mit 5 Vorkommastellen</fo:block>
    <fo:block><xsl:value-of select="format-number(99999.990,'#.##0,00','de')"/></fo:block>
    <fo:block>Zahl mit 13 Vorkommastellen</fo:block>
    <fo:block><xsl:value-of select="format-number(9999999999999.990,'#.##0,000','de')"/></fo:block>
    <fo:block>Zahl mit 14 Vorkommastellen</fo:block>
    <fo:block><xsl:value-of select="format-number(99999999999999.990,'#.##0,000','de')"/></fo:block>
    <fo:block>Zahl mit 15 Vorkommastellen</fo:block>
    <fo:block><xsl:value-of select="format-number(999999999999999.990,'#.##0,000','de')"/></fo:block>

    ....

    als Transforationsergebnis wird folgende fo-Datei (Ausschnitt) erzeugt:

    ...
    <fo:block>Zahl mit 5 Vorkommastellen</fo:block>
    <fo:block>99.999,99</fo:block>
    <fo:block>Zahl mit 13 Vorkommastellen</fo:block>
    <fo:block>9.999.999.999.999,990</fo:block>
    <fo:block>Zahl mit 14 Vorkommastellen</fo:block>
    <fo:block>99.999.999.999.999,980</fo:block>
    <fo:block>Zahl mit 15 Vorkommastellen</fo:block>
    <fo:block>1.000.000.000.000.000,000</fo:block>
    ...

    Kann mir jemand in dieser Sache weiterhelfen, ob diese Funktion generell bei großen Zahlen nicht einwandfrei funktioniert, oder ob ich noch irgendeine Einstellung oder Definition vornehmen muß.

    Vielen Dank für die Hilfe.

    Gruß

    Jürgen B.

  • #2
    Ich kann das Ergebnis u. a. mit dem MSXML-Prozessor nachvollziehen. Es ist offenbar kein Bug, sondern das Erreichen der Genauigkeitsgrenze bei Fließkommazahlen. Unter Javascript liefert alert(parseFloat(999999999999999.990)); analog den Wert 1000000000000000. Allerdings ergibt eine aktuelle Saxon-Version 999.999.999.999.999,990 und somit liegt in diesem Fall der Wechsel des Prozessors nahe.

    Comment


    • #3
      Danke für die schnelle Antwort.

      Ich hatte das Phänomen mit dem Xalan 2.7.0.

      Comment

      Working...
      X