Uli: Addieren geht nicht

Hallo zusammen,

ich habe wohl nur ein kleines Problem mit dem Addieren im JS. Ich schreibe es mal in Kurzform:

var a = 10;
var z;

z = a + 5000;

Als Ergebnis bekomme ich hier immer 105000 anstatt 5010. (?)

Wenn ich die Werte aber multipliziere (* anstatt +), erhalte ich das richtige Ergebnis.

Auch das funktionierte nicht:

z = eval(a + 5000);

Für Tips wäre ich sehr dankbar.

Gruß Uli

  1. Hallo Uli,

    ich habe wohl nur ein kleines Problem mit dem Addieren im JS. Ich schreibe es mal in Kurzform:

    var a = 10;
    var z;

    z = a + 5000;

    Als Ergebnis bekomme ich hier immer 105000 anstatt 5010. (?)

    Bei mir liefern sowohl Internet Explorer 6.0 als auch Firefox 1.0 5010 als Ergebnis.

    Mit welchem Browser arbeitest du?

    cu

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Mit welchem Browser arbeitest du?

      Hallo, ich habe auch IE6. Aber habe die Lösung schon gefunden. Danke.

      Gruß Uli

      1. Moin!

        Hallo, ich habe auch IE6. Aber habe die Lösung schon gefunden. Danke.

        Die Lösung ist, dass deine Zahlen Strings sind, die mit dem Plus hintereinandergehängt werden.

        Das Multiplizieren mit eins macht daraus dann Zahlen, die mit dem Plus addiert werden.

        Wenn du die Variablen a und z tatsächlich, wie im Beispiel angegeben, mit var a=10; definiert hättest, dürfte das Problem aber absolut nicht auftreten. Vermutlich kommt dein Wert für a aus einem Formularfeld. Deshalb ist es ein String, keine Zahl.

        Anstelle der Multiplikation solltest du lieber die dafür vorgesehenen Funktionen aus Javascript benutzen: parseFloat() und parseInt(). http://de.selfhtml.org/javascript/objekte/unabhaengig.htm

        - Sven Rautenberg

  2. Habe meine Lösung selbst gefunden...

    z = a*1 + 5000*1;

    So geht es. :-)

    Danke trotzdem.
    Uli

    1. Hallo Uli,

      Habe meine Lösung selbst gefunden...

      z = a*1 + 5000*1;

      Das ist vielleicht eine Lösung - aber ein wirklich blöder Workaround um das Problem herum.

      Ich persönlich würde gerne das Problem an sich gelöst haben.

      Ich habe noch mal etwas nachgedacht:
      Der "+"-Operator ist mit mehreren Typen überladen (um auch das Addieren von Strings zu ermöglichen), der "*"-Operator nur mit Zahlen.

      Das ist schon mal die Ursache für deine "105000" (String!).

      Die Frage ist nur noch: Wieso wird die String-Variante des "+"-Operators ausgelöst, und nicht die Zahlen-Variante?

      Bitte geb mir doch mal mehr Informationen dazu, vor allem welchen Browser (in welcher Version) du benützt - und wie dein kompletter Problem-Code aussieht.

      cu

      Marc Reichelt || http://www.marcreichelt.de/

      --
      Linux is like a wigwam - no windows, no gates and an Apache inside!
      SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      http://emmanuel.dammerer.at/selfcode.html