Jochen P.: Zahlen skalieren

Hallo,

ich habe ein kleines aber aergerliches problem. Und zwar habe ih eine Zahl, zB. 0.09 als Text. Diese Zahl soll nun mit 1000 dividiert werden. Als Ergebnis wuerde ich gerne 0.00009 erhalten. Angezeigt wird mir aber 0.00008999999999999999. Wie kann ich das Problem loesen?

Gruss, Jochen

  1. Hi, Jochen!

    Fließkomma-Mathematik in JavaScript ist nicht sonderlich präzise. Die Einzige Möglichkeit besteht darin, die benötigte Präzision selbst zu erzeugen, indem man das Ergebnis in den Integer-Bereich verschiebt und die Darstellung entsprechend anpasst.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
  2. Hi,

    Angezeigt wird mir aber 0.00008999999999999999. Wie kann ich das Problem loesen?

    Jaja, Rechnen mit JS... Du musst festlegen, wie viele Nachkommastellen Du willst und dann sowas durchführen:
        var x =  "0.09";
            x =  parseFloat(x);

    x =  x/1000;

    x =  Math.round(x*100000);
            x =  x/100000;

    alert(x);

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. @@Joachim:

      nuqneH

      Jaja, Rechnen mit JS... Du musst festlegen, wie viele Nachkommastellen Du willst und dann sowas durchführen:
          var x =  "0.09";
              x =  parseFloat(x);

      x =  x/1000;

      x =  Math.round(x*100000);
              x =  x/100000;

      alert(x);

      Nö, „sowas“ geht wesentlich einfacher, denn JavaScript bietet von Haus aus <http://de.selfhtml.org/javascript/objekte/number.htm#to_fixed@title=eine Methode dafür>.

      var x = 0.09;  
      x /= 1000;  
      alert(x.toFixed(5));
      

      Oder auch

      var x = 0.09;  
      x /= 1000;  
      alert(x.toPrecision(1));
      

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hi,

        Nö, „sowas“ geht wesentlich einfacher, denn JavaScript bietet von Haus

        na sowas! Wieso hat sich toFixed bisher vor mir versteckt?
        ;-)

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
    2. Besten Dank!

      das hat mich auf die richtige Spur gebracht.

      Gruss, Jochen

  3. Nabend!

    Mit Floatwerten Rechnen ist immer ein Problem, nicht nur in Javascript. Auch z.B. MS Datenbanken speichern bei floats nur mehr oder weniger genaue Annaehrungen. Deshalb wird ja auch die Verwendung von decimal empfohlen. Das gibts bei JS nunmal nicht, also muss man mit Ganzzahlen rechnen und sich diese ggf. ersmal erstellen.

    --
    Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.