Javascript summe berechnene?
Hallo, ich möchte dass die 3 eingegebenen Zahlen zusammengerechnet werden. Bei mir werden sie aber zusammengehängt.. Bsp: 1 + 2 + 3 = 123 und nicht = 6.
3 Antworten
prompt() gibt einen String zurück.
"1" + "2" ist "12", denn Strings werden durch ein Plus einfach aneinandergefügt.
Was du brauchst sind Zahlen anstatt Zeichen. 1 + 2 ist, wie erwartet, 3. Um also aus dem Eingabe-String eine Zahl zu machen, mit der du rechnen kannst, musst du die Funktion parseInt(), parseFloat() oder Number() verwenden. Hier ist vermutlich ersteres die beste Lösung.
Mach also bei allen drei Eingaben noch ein parseInt() um das prompt().
zahl1 = parseInt( prompt("Geben sie eine Zahl ein!") );
Ups, hab bei Prompt ein p vergessen. Jetzt sollte es klappen.
@MrAmazing2 hat ja bereits beschrieben, wo der Fehler liegt.
Allerdings wäre mir die Eingabe einzelner Zahlen und deren Berechnung nicht flexibel genug.
Wenn Du schon eine Abfrage machst und nur ein Ergebnis erwartest , kannst Du auch die ganze Formel in einem Rutsch entgegennehmen.
Ganz egal wie komplex die in der nachfolgenden Demo eingegebene Aufgabe ist, sie wird klaglos berechnet.
Eval() kann Strings als JavaScriptcode ausführen. Ergo auch komplette Formeln berechnen, als hättest Du diese in Dein Script geschrieben.
Im Beispiel wird nicht geprüft, was ein Nutzer eingibt. Aus Sicherheitsgründen sollte man unter realen Bedingungen per RegEx festlegen, was als Eingabe gestattet ist und/oder per try und catch fehlerhaften Eval-code behandeln.
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
Formel= prompt('Gib Deine zu berechnende Formel ein');
Ergebnis= eval(Formel);
document.getElementById("demo").innerHTML = Formel + ' = ' + Ergebnis;
</script>
</body>
</html>
...gib einfach mal 1 + 2 + 3 ein...
Schreibe unten:
parseInt( zahl1 ) + parseInt( zahl2 ) + parseInt( zahl3 )
+ kann Zeichenketten (Strings) aneinander ketten oder Zahlen addieren.
prompt liefert Zeichenketten. parseInt(.) macht daraus eine Zahl ohne Nachkommastellen.
Danke, was genau meinst du mit parselnt? ich habe dass jetzt so verstanden, dass ich die " werte" einzeln in klammern setzten muss
Ja, danke. Ich verstehe dies leider immer noch nicht. Wo würdest du dies einsetzen, gibt es noch anderes abzuändern?
MrAmazing hat das gut beschrieben. Vermutlich am PC und nicht am SmartPhone.
Das parseInt muss irgendwo zwischen dem Funktionswert von promt(.) und der Addition vorkommen.
prompt(.) liefert beispielsweise "4711", eine Zeichenkette mit den eingetippten Zeichen.
Damit kann man aber nicht rechnen, auch nicht addieren. Das muss intern erst in eine Zahl gewandelt werden, damit das + eine Rechenoperation und kein Aneinanderhängen von Zeichenketten ist.
MrAmazing hat das gleich beim jedem prompt(.) gemacht, meine Lösung war, dass direkt in der Berechnung zu machen.
In diesem Beispiel ist das völlig egal. Bei größeren Programmen sollte es weitere Bedingungen geben, die die eine oder andere Variante bevorzugt.
trozdem danke, hat mir ja trozdem geholfen das weiter zu verstehen :)
bei mir funktioniert dies noch nicht ganz... jetzt bekomme ich keine eingabe aufforderung mehr. ich habe jetzt deine zeile kopiert und durch meine zeilen ersetzt