fehlerhafte addition?

Gaius

Mitglied
hallo,

ich habe zwei variablen definiert

bla = 10;
blub = 5;

wenn ich nun mache

a = bla+blub;

kommt da nicht 15 sondern 105 raus ,der verbindet die zahlen einfach.
weissn einr abhilfe? ich habe bestimmt nur irgendeine formalität vergessen -.-...
 
Als was hast du die Variablen denn definiert? Das sieht mir fast so aus, als ob er das wie bei nem String einfach aneinanderfügt.

Mach die Variablen mal definitiv als Integer Werte.
 
Problem gelöst

Das Problem dürfte einfach zu lösen sein (glaub ich zumindest):

JavaScript interpretiert den Inhalt der Variablen als Strings.
Um eine Rechenoperation durchzuführen, solltest du das Schlüsselwort eval einsetzen:
a = eval(bla + blub);

lg D;-]c
 
JavaScript interpretiert den Inhalt der Variablen als Strings.
Um eine Rechenoperation durchzuführen, solltest du das Schlüsselwort eval einsetzen:
a = eval(bla + blub);

Das ist nicht ganz so...

Javascript weiss schon recht gut, welchen Typ eine Variable hat... bei dem Problem würde auch eval() nicht weiterhelfen.

Das Beispiel kann ich nicht recht nachvollziehen, denn es ergibt bei mir 15 :)

Der Typ ist, wie Heiko erwähnte, von entscheidender Bedeutung....schreibst du die Zahl einfach so als Wert hin, bleibt sie auch eine Zahl.

Anders verhält es sich, wenn du die Zahl in Anführungszeichen setzt... dann ist es ein String.
Vielleicht holst du die Zahl ja auch aus einem Eingabefeld....Werte aus Formularfeldern oder auch der URL sind ebenfalls immer vom Typ String

Zur Verdeutlichung:
Code:
bla  = 10;
blub = 5;
a = bla+blub;
//a ist 15

bla  = '10';
blub = 5;
a = bla+blub;
//a ist 105
Es findet nur eine Rechenoperation statt, wenn alle Variablen vom Typ Integer sind, andernfalls eine String-Verknüpfung.

Um sicher zu gehen, dass eine Rechenoperation ausgeführt wird, konvertiere die Variablen vorher, wie bereits vorgeschlagen, in Integer:
Code:
a = Number(bla) + Number(blub);

Das ist allerdings nur bei der Addition nötig(weil in JS die Operatoren für mathematische Addition und String-Verknüpfung identisch sind)
 
Hallo,
wenn du die Variablen vorher tatsächlich als int angegeben hast, versuch mal:
bla + blub statt bla+blub - ich habe damit schon die tollsten Ergebnisse erzielt (da rechnet Netscape plötzlich anders als IE).
Gruß
madlds
 
Warum sollte das mit eval() nicht klappen?!
.....

Wenn das übergebene Argument als Rechenoperation interpretierbar ist, wird die Operation berechnet und das Ergebnis zurückgegeben.

Das übergebene Argument ist aber weiterhin nicht als Rechenoperation interpretierbar, weil sich an den Typen der Variablen nichts ändert.
 
ok ich weiss zwar nicht ,was ich gemacht habe ,aber mit einemal ging es. erst habe ich das language=javascript entfernt ,später wieder hinzugefügt...egal hehe
 

Neue Beiträge

Zurück