Andi: Fehler in Summenberechnung!?

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!

  1. 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

    --
    jeden Tag 'ne Currywurst...
    1. 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.

      1. 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?!

        1. 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

          1. Die Lösung war...

            number(zahl1) + number(zahl2)

            danke!

            ciao

          2. Hi,

            was willst du denn jetzt bitte schön noch?

            Andi ist bestimmt *der* Andreas ... >:->

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        2. 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

        3. 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

          --
          jeden Tag 'ne Currywurst...
  2. Hallo

    Du addierst zwei Strings --> sie werden konkateniert. Wandle die Strings vor der Berechnung in Zahlen um!

    Grüsse
    gant

  3. Hallo.

    var zahl1 = 3;
    var zahl2 = 1;
    this.form.ergebnis.value = zahl1 + zahl2

    Ausgabe 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

    1. Hallo.

      var zahl1 = 3;
      var zahl2 = 1;
      this.form.ergebnis.value = zahl1 + zahl2

      Ausgabe 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

      1. 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

        1. 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

          1. 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