Ergebnis 1 bis 3 von 3
  1. #1
    OlliTheHutt ist offline Grünschnabel
    registriert
    31-08-2005
    Beiträge
    2

    Frage zu der Funktion "toPrecision"

    Hallo,

    hier erst mal das Beispiel von SELFHTML:

    Quelltext:
    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    Wert = 7123.209;
    document.write("precision(1) = " + Wert.toPrecision(1) + "<br>");
    document.write("precision(2) = " + Wert.toPrecision(2) + "<br>");
    document.write("precision(3) = " + Wert.toPrecision(3) + "<br>");
    document.write("precision(4) = " + Wert.toPrecision(4) + "<br>");
    document.write("precision(5) = " + Wert.toPrecision(5) + "<br>");
    document.write("precision(6) = " + Wert.toPrecision(6) + "<br>");
    document.write("precision(7) = " + Wert.toPrecision(7) + "<br>");
    document.write("precision(8) = " + Wert.toPrecision(8) + "<br>");
    </script>
    </body></html>

    Ausgabe:
    precision(1) = 7e+3
    precision(2) = 7.1e+3
    precision(3) = 7.12e+3
    precision(4) = 7123
    precision(5) = 7123.2
    precision(6) = 7123.21
    precision(7) = 7123.209
    precision(8) = 7123.2090

    Soweit alles schön und gut.


    Ich habe jetzt ein Problem entdeckt, wenn ich z.B. einen Wert von 0.209 in das Beispiel einfügen würde.
    Hier scheint er die Null vor dem Punkt nicht wirklich ernst zu nehmen.

    Quelltext:
    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    Wert = 0.209;
    document.write("precision(1) = " + Wert.toPrecision(1) + "<br>");
    document.write("precision(2) = " + Wert.toPrecision(2) + "<br>");
    document.write("precision(3) = " + Wert.toPrecision(3) + "<br>");
    document.write("precision(4) = " + Wert.toPrecision(4) + "<br>");
    document.write("precision(5) = " + Wert.toPrecision(5) + "<br>");
    document.write("precision(6) = " + Wert.toPrecision(6) + "<br>");
    document.write("precision(7) = " + Wert.toPrecision(7) + "<br>");
    document.write("precision(8) = " + Wert.toPrecision(8) + "<br>");
    </script>
    </body></html>

    Ausgabe:
    precision(1) = 0.2
    precision(2) = 0.21
    precision(3) = 0.209
    precision(4) = 0.2090
    precision(5) = 0.20900
    precision(6) = 0.209000
    precision(7) = 0.2090000
    precision(8) = 0.20900000

    Bei einem Wert größer eins scheint die Welt wieder in Ordnung zu sein.

    Quelltext:
    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    Wert = 1.209;
    document.write("precision(1) = " + Wert.toPrecision(1) + "<br>");
    document.write("precision(2) = " + Wert.toPrecision(2) + "<br>");
    document.write("precision(3) = " + Wert.toPrecision(3) + "<br>");
    document.write("precision(4) = " + Wert.toPrecision(4) + "<br>");
    document.write("precision(5) = " + Wert.toPrecision(5) + "<br>");
    document.write("precision(6) = " + Wert.toPrecision(6) + "<br>");
    document.write("precision(7) = " + Wert.toPrecision(7) + "<br>");
    document.write("precision(8) = " + Wert.toPrecision(8) + "<br>");
    </script>
    </body></html>

    Ausgabe:
    precision(1) = 1
    precision(2) = 1.2
    precision(3) = 1.21
    precision(4) = 1.209
    precision(5) = 1.2090
    precision(6) = 1.20900
    precision(7) = 1.209000
    precision(8) = 1.2090000

    Ich würde hier jetzt einen Fehler in der Implementierung vermuten oder ist die Null mathematisch wirklich so uninteressant. (bin aber kein Experte)

    Hat irgendwer schon mal was ähnliches festgestellt? Oder gibt es irgendwo eine Berichtsseite zu Fehlern in JavaScript?

    Gruß
    Olaf


    Noch ein Test ('ne kleine Erweiterung)

    Quelltext:
    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    Wert = 0.00009;
    document.write("precision(1) = " + Wert.toPrecision(1) + "<br>");
    document.write("precision(2) = " + Wert.toPrecision(2) + "<br>");
    document.write("precision(3) = " + Wert.toPrecision(3) + "<br>");
    document.write("precision(4) = " + Wert.toPrecision(4) + "<br>");
    document.write("precision(5) = " + Wert.toPrecision(5) + "<br>");
    document.write("precision(6) = " + Wert.toPrecision(6) + "<br>");
    document.write("precision(7) = " + Wert.toPrecision(7) + "<br>");
    document.write("precision(8) = " + Wert.toPrecision(8) + "<br>");
    </script>
    </body></html>

    Ausgabe:
    precision(1) = 0.00009
    precision(2) = 0.000090
    precision(3) = 0.0000900
    precision(4) = 0.00009000
    precision(5) = 0.000090000
    precision(6) = 0.0000900000
    precision(7) = 0.00009000000
    precision(8) = 0.000090000000

    Es scheint sich eher auf die erste Ziffer größer 0 zu beziehen. Oder meintest Du das auch PIT?

    Gruß
    Olaf
    Geändert von OlliTheHutt (31-08-2005 um 13:24 Uhr) Grund: Wichtig scheint die erste Zahl größer 0 zu sein.

  2. #2
    pit-r Guest

    AW: Frage zu der Funktion "toPrecision"

    Moin!

    Das ist alles ganz korrekt so. Es geht allerdings nicht um die Null vor dem Punkt, sondern um die Null, die als letzte Ziffer hinter ihm steht. Mit:

    Wert = 0.209;
    Wert.toPrecision(1)

    sagst Du nix anderes als: runde mir Wert auf eine Stelle hinter dem Komma genau. Das ist hier 0.2. Hier hingegen:

    Wert = 1.209;
    Wert.toPrecision(1)

    ergibt sich 1.0 - die Null wird weggelassen, da 1.0 = 1 ist...

    Ahoi - Pit

    Edit: alles Mumpitz. Was ich im Kopf hatte steht so tatsächlich in der JS-Dokumentation:

    toPrecision([precision])
    Parameters: precision - An integer specifying the number of digits after the decimal point.

    Ist aber Quatsch. Wahrscheinlich liegt es wohl daran, daß 0.2 als .2 interpretiert wird, wodurch das in der String-Darstellung nachher mit der Null vor dem Punkt eine Stelle zuviel hat...
    Geändert von pit-r (31-08-2005 um 12:14 Uhr) Grund: Was richtiges im Kopf gehabt, das aber falsch ist :D

  3. #3
    OlliTheHutt ist offline Grünschnabel
    registriert
    31-08-2005
    Beiträge
    2

    AW: Frage zu der Funktion "toPrecision"

    Es scheint irgendwie Probleme mit Werten zwischen -1 und 1 zu geben. (aber nicht alle, nur manchmal) Es scheint bei Zahlen wie z.B. 0,909 aufzutauchen, wenn vor dem Punkt eine Null steht und noch eine Null zwischen Ziffern nach dem Punkt.

Ähnliche Themen

  1. funktion zum beenden einer funktion
    Von ScHmEttE im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 14-06-2008, 12:48
  2. 100 Wege eine Pizza zu bestellen
    Von Redpadz im Forum Fun
    Antworten: 1
    Letzter Beitrag: 10-02-2008, 17:18
  3. funktion in funktion aufrufen
    Von Tolwin im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 13-10-2004, 16:39
  4. teil von funktionsargumenten an andere funktion
    Von mael15 im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 06-08-2004, 18:59
  5. übergabewert in rekursiver funktion
    Von flexi im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 30-01-2002, 19:51

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •