Michi: a != a

Hi, ich habe eine kleine grundlegende Frage:
in einem JavaScript von mir steht folgendes (stark vereinfacht):
newValue = 1;
a = newValue;
b = newValue;

Bei Ausgabe der Werte ergibt sich in ca. 5% aller Versuche:
a = 1;
b != 1;
newValue hat aber immer noch den Wert 1. Ich hab zwar dafür schon einen kleinen Workaround gebastelt, mich würde aber interessieren, warum das so ist?

Danke im Voraus,
Michi

  1. newValue = 1;
    a = newValue;
    b = newValue;

    Bei Ausgabe der Werte ergibt sich in ca. 5% aller Versuche:
    a = 1;
    b != 1;
    newValue hat aber immer noch den Wert 1. Ich hab zwar dafür schon einen kleinen Workaround gebastelt, mich würde aber interessieren, warum das so ist?

    Erdstrahlen. Eindeutig Erdstrahlen.

    Gruß :)
      soenk.e

    PS: Etwas mehr vom Skript wäre nicht schlecht.

  2. Hi,

    ich habe eine kleine grundlegende Frage:

    eine, die die bekanntermaßen geringe Rechengenauigkeit eines Binärsystems betrifft, wenn es mit dem (extrem ungünstig gewählten(1)) Dezimalsystem rechnen muss?

    in einem JavaScript von mir steht folgendes (stark vereinfacht):

    Etwas weniger vereinfacht wäre nicht schlecht.

    Bei Ausgabe der Werte ergibt sich in ca. 5% aller Versuche:

    Bedingt durch?

    Ich hab zwar dafür schon einen kleinen Workaround gebastelt,

    Der da wie aussieht?

    Cheatah

    (1) Falls Gott jemals existierte, war sie ein Sadist. Uns ausgerechnet zehn Gliedmaßen an die Hände zu zimmern! Zeichentrickfiguren haben es gut, die können wenigstens oktal rechnen.

    1. Der da wie aussieht?

      Nachdem der Fehler in nur 5% der Fälle auftritt funktioniert folgendes:

      while (a != b)
      {
        a = newValue;
        b = newValue;
      }

      Michi

      P.S. Wenn beide Werte "identisch falsch" sind ist das nicht so schlimm, da der User das bemerkt.

      1. Hallo.

        while (a != b)
        {
          a = newValue;
          b = newValue;
        }

        Das ist ein bißchen um die Ecke gedacht, wenn du willst, dass a gleich b ist, mach das doch so:

        a = newValue;
         b = a;

        Was auch gehen sollte, ist...

        a = b = newValue;

        ...wobei ich mir nicht sicher bin, ob das den Standards entspricht.

        Gruß
        Norbert