Homepage de.comp.lang.javascript
Homepage
de.comp.lang.javascript

FAQ de.comp.lang.javascript

FAQ
de.comp.lang.javascript

 

 

Bitte verwenden Sie als Einstiegsadresse in diese FAQ die Homepage der Newsgroup de.comp.lang.javascript. Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
 

 

Wie kann ich zwei Zahlenwerte vergleichen?

Ist "100" kleiner als "30"?

Wer Zahlenwerte miteinander vergleichen will, die er aus Formulareingaben gewonnen hat, wundert sich mitunter darüber, dass bspw. "100" kleiner "30" ist.
Beispiel:

var wert1 = document.forms['foo'].elements['eingabe1'].value,
    wert2 = document.forms['foo'].elements['eingabe2'].value;
if (wert1 < wert2) {
  alert(wert1 + ' ist kleiner als ' + wert2 + '.');
}
else if (wert2 < wert1) {
  alert(wert2 + ' ist kleiner als ' + wert1 + '.');
}
else {
  alert('Beide Werte sind gleich.');
}

Ausprobieren:



Der Grund hierfür ist, dass die value-Eigenschaft eines Input-Elements vom Typ string ist und Vergleichsperatoren wie "<" und ">" Strings lexikalisch vergleichen. Bei einem solchen Vergleich ist aber ein String, der mit "1" beginnt, vor einem String, der mit "3" beginnt, einzuordnen.

Abhilfe

Für einen numerischen Vergleich benötigen wir Operanden vom Typ number, wir müssen daher unsere Formulareingaben in diesen Typ umwandeln. Dies kann explizit geschehen, indem wir bspw. den Number()-Konstruktor verwenden. Einfacher ist jedoch das Bilden einer Differenz. Der zugehörige Operator "-" betrachtet seine Operanden immer als Number und liefert ein Ergebnis gleichen Typs (bzw. NaN, falls sich seine Operanden nicht als Zahlenwerte interpretieren lassen, was wir in diesem einfachen Beispiel aber außer acht lassen). Die so gebildete Differenz vergleichen wir dann mit 0.
Beispiel:

var wert1 = document.forms['foo'].elements['eingabe1'].value,
    wert2 = document.forms['foo'].elements['eingabe2'].value;
if (wert1 - wert2 < 0) {
  alert(wert1 + ' ist kleiner als ' + wert2 + '.');
}
else if (wert2 - wert1 < 0) {
  alert(wert2 + ' ist kleiner als ' + wert1 + '.');
}
else {
  alert('Beide Werte sind gleich.');
}

Ausprobieren:



top

Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/. Der Text der Seite wurde erstellt von Dietmar H. G. Meier (©).

 ______ letzte Änderung: 12/2012 ______ 

 
© S. Mintert, Ch. Kühnel