Fehler in Summenberechnung!?
Andi
- javascript
Hallo zusammen!
folgendes Problem, ich habe eine einfache Rechenformel via JS,
ich lade ein paar Variablen aus einem Form, runde diese, ersetze Kommas durch Punkte (tut alles...!)
Nur bei der abschliessenden Berechnung tritt immer folgender Fehler auf:
Es wird bei der Funktion keine Berechnung, Summer erzeugt,
Beispiel
var zahl1 = 3;
var zahl2 = 1;
this.form.ergebnis.value = zahl1 + zahl2
Ausgabe am Browser: 31 !!!!!!
Was ist das Problem!?
PS. Ich bin mir sicher, dass meine Rundungen etc. funktionieren,
da ich mir schon jeden einzelnen Zwischenwert in der Berechnung an den Browser hab senden lassen - alles richtig, Stellen, Punkte, etc.!
Danke für euere Hilfe!
Hallo Andi,
das kann nur passieren, wenn zahl1 und zahl2 Strings sind. Dann ist das Ergebnis als String-Addition auch richtig.
Da Du mit this.form.ergebnis.value wohl ein Textfeld hast, hast Du eben auch Strings. Du benötigst die Methode parseInt(), zu finden in SelfHtml...
;o) bluntburn
Wichtig ist blos, dass du Javascript klar machst, dass die Variablen
Zahlen sind, bevor du den '+'-Operator bentutzt.
Mit this.form.ergebnis.value = 1 * zahl1 + zahl2 geht's z.B. auch.
Das hilft nichts!
Komisch ist, dass er mir die Berechnungen vorher alle ausführt!
Sprich die Addition ist eigentlich die Summe aus einem Produkt und einer Divison?!
Da behandelt er mir die Variablen doch als Zahlen?!
Bei meiner Umwandlung des Kommas in Punkte macht er mir zwar Strings aus den Variablen, aber ich kann ja rechnen mit ihnen?!
hi,
Bei meiner Umwandlung des Kommas in Punkte macht er mir zwar Strings aus den Variablen, aber ich kann ja rechnen mit ihnen?!
was willst du denn jetzt bitte schön noch?
die lösung wurde dir genannt, wandle die strings explizit in zahlen um.
bei strings dient der operator + zur verkettung, also ist das verhalten vollkommen logisch.
gruss,
wahsaga
Die Lösung war...
number(zahl1) + number(zahl2)
danke!
ciao
Hi,
was willst du denn jetzt bitte schön noch?
Andi ist bestimmt *der* Andreas ... >:->
Gruß, Cybaer
Hallo,
Da behandelt er mir die Variablen doch als Zahlen?!
wie oben jemand erwehnt hat, kann man aus Str Int machen, indem man den Str mit 1 multipliziert. Was macht er also dabei? Er wandelt den Str in Int um, durch die Multiplikation (man hätte auch Durch wählen können). Wenn du diese Variable nun addieren möchtest, funzt das auch.
Bei meiner Umwandlung des Kommas in Punkte macht er mir zwar Strings aus den Variablen, aber ich kann ja rechnen mit ihnen?!
Siehe oben.
Gruß Frank
Hi Andi,
Da behandelt er mir die Variablen doch als Zahlen?!
Bei meiner Umwandlung des Kommas in Punkte macht er mir zwar Strings aus den Variablen, aber ich kann ja rechnen mit ihnen?!
In Javascript kann man Variablen deklarieren, ohne ihnen einen Typ zuzuweisen. Darüber hinaus ist Javascript oft sehr großzügig und macht keinen Unterschied zwischen 3 und "3".
Wenn Du allerdings sauberen Code schreiben willst, solltest Du an den betreffenden Stellen immer Typwandlungen durchführen. Damit bist Du immer auf der sicheren Seite.
Wie Du ja gesehen hast, klappt es mit Number(). Die weiteren Typwandlungen von String zu Number sind parseInt() und parseFloat().
Die Multiplikation mit 1 funktioniert zwar, aber ich persönlich halte das für suboptimal!
;o) bluntburn
Hallo
Du addierst zwei Strings --> sie werden konkateniert. Wandle die Strings vor der Berechnung in Zahlen um!
Grüsse
gant
Hallo.
var zahl1 = 3;
var zahl2 = 1;
this.form.ergebnis.value = zahl1 + zahl2Ausgabe am Browser: 31 !!!!!!
Ging mir mal genauso. Lösung:
zahl1 - (- zahl2)
minus + minus = plus.
Ich weiß nicht ob es immer klappt, aber zumindest bei mir tut's.
Ich hoffe ich konnte helfen, H²O
Hallo.
var zahl1 = 3;
var zahl2 = 1;
this.form.ergebnis.value = zahl1 + zahl2Ausgabe am Browser: 31 !!!!!!
Das ist immer so, wenn man strings verkettet.
Konvertiere die Variablen vom Typ string in den Typ integer!
Ging mir mal genauso. Lösung:
zahl1 - (- zahl2)
minus + minus = plus.
Unsinn! minus + minus = 2 minus
oder aber:
=> plus = 2 minus.
Hättest Du heute morgen im Untericht aufgepaßt, dann wüßtest Du:
minus * minus = plus.
Ich weiß nicht ob es immer klappt, aber zumindest bei mir tut's.
Ich hoffe ich konnte helfen, H²O
Gruß
C2H5OH
Hi.
minus + minus = plus.
Unsinn! minus + minus = 2 minus
oder aber:
=> plus = 2 minus.
Hättest Du heute morgen im Untericht aufgepaßt, dann wüßtest Du:
minus * minus = plus.
Von wegen Unsinn. Bei mir klapp's wunderbar und ich werde morgen meinen Mathelehrer fragen was stimmt! :-P
Wenn das Minus was darauf folgt nähmlich in der Klammer steht, dann stimmt das, was ich gesagt habe.
Erklärung:
Wenn ein minus vor einer Klammer steht werden alle Vorzeichen umgedreht, damit die Klammer aufgelöst werden kann.
Also: 2 - (-1) = 2 + 1 = 3
H²O
Hi.
minus + minus = plus.
Unsinn! minus + minus = 2 minus
oder aber:
=> plus = 2 minus.
Hättest Du heute morgen im Untericht aufgepaßt, dann wüßtest Du:
minus * minus = plus.Von wegen Unsinn. Bei mir klapp's wunderbar und ich werde morgen meinen Mathelehrer fragen was stimmt! :-P
Wenn das Minus was darauf folgt nähmlich in der Klammer steht, dann stimmt das, was ich gesagt habe.
Erklärung:
Wenn ein minus vor einer Klammer steht werden alle Vorzeichen umgedreht, damit die Klammer aufgelöst werden kann.
Also: 2 - (-1) = 2 + 1 = 3
Dein Mathelehrer wird Dir dann sicher morgen eingehend erläutern, daß eine Algebra gewöhnlich mit zwei Verknüpfungen auskommt, die auf einer Menge definiert sein die üblichen Regeln erfüllen müssen:
1. existenz eines Neutralen Elementes für jede Verknüpfung,
2. zu jedem Element muß ein inverses Element existieren (je Verknüpfung)
3. Assoziativgesetz muß gelten
4. Distributivgesetz muß gelten
etc.
In der Algebra die Du kennst nennt man diese Verknüpfungen Addition und Multiplikation. Das Minuszeichen ist lediglich eine Abkürzung für die Multiplikation der folgenden Zahl mit dem Negativen ihres Neutralen Elementes, also der -1 (und zwar vollkommen egal wo es steht. - Ergänzend muß noch erwähnt werden, daß zur Konvention dieser Abkürzung gehört, daß ein unmittelbar vordem "-" stehendes Verknüpfungszeichen der Addition wegfällt). Da das inverse Elemente bzgl. der Muliplikation für die -1 ebenfalls die -1 ist ergibt sich aus der Verknüpfung der -1 und ihrem inversen Element mittels Multiplikation das neutrale Element dieser Verknüpfung.
Der breiten Masse ist Diese Regel unter der Bezeichnung
minus * minus = plus
bekannt.
Du hingegen hast die andere Verknüpfung (Addition) auf die -1 angewand
(siehe oben: minus + minus = plus)
Auf die Dir bekannte Algebra angewandt ist das Ergebnis dann -2
Dein Mathelehrer wird Dir morgen bestätigen, daß diese ungleich dem neutralen Element der Multiplikation ist.
Von wegen Unsinn. Bei mir klapp's wunderbar
Natürlich klappt das wunderbar, aber nicht wegen Deiner falsche Regel, sondern weil Du implziet den Typ Deiner Variablen geändert hast und damit keine strinOperation mehr durchgeführt wurde, sondern eine arithmetische Operation.
Gruß
C2H5OH
Hi.
In der Algebra..............Multiplikation ist.
Ich bin leider erst 8. Klasse und habe heute vergessen meinen Mathelehrer zu fragen. So'n Mist.
Natürlich klappt das wunderbar, aber nicht wegen Deiner falsche Regel, sondern weil Du implziet den Typ Deiner Variablen geändert hast und damit keine strinOperation mehr durchgeführt wurde, sondern eine arithmetische Operation.
Es ist doch egal wie. Hauptsache es klappt. :-)
H²O