Announcement

Collapse
No announcement yet.

Simpler Zahlenvergleich funktioniert nicht bei großen Zahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Simpler Zahlenvergleich funktioniert nicht bei großen Zahlen

    Hallo Community,

    ich habe hier ein kleines Problem mit großen Zahlen.

    Ich habe ein kleines Script das für eine BHKW Steuerung per Eingabefeld eine Leistung annimmt und diese auf definierte Min-Max Werte vergleicht. Das Script funktioniert auch, ABER, nur solange die von mir zulässigen Max Werte unterhalb einer Million liegen. Also gebe ich vor das das BHKW 1.000.000 W als Max hat, dann kann ich KEINE kleineren Werte wie z.b. 8500 oder 5 eingeben, bzw weisst das Script das als Fehler ab. Liegt der Max bereich bei 999.999 W, dann kann ich kleinere Werte wie 5 oder 1200 W nehmen.

    Obwohl der Wert größer als 0 (lmin) und kleiner als 1000000 (lmax) ist geht das Script in den else Alert rein. Bei Zahlen kleiner 1000000 ist alles gut. Wo ist denn hier mein Fehler ?
    Hier mein JS Script:
    Code:
    function keepDigits(str) {
        return str.replace( /[^0-9]/g, "" );
    }
    function leistungsoll(anlid, getleistung, lmin, lmax) {
        var leistung = prompt("Bitte die SOLL Leistung in W eingeben ("+
                lmin+" W - "+ lmax+ " W): ", getleistung);
        var zleistung = keepDigits(leistung);
        if (zleistung == null || zleistung == "") {
            zleistung = 0;
        } else {
            //alert("Soll " + zleistung + " Min " + lmin + " Max " + lmax);
            if (zleistung >= lmin && zleistung <= lmax) {
                if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                        xmlhttp = new XMLHttpRequest();
                } else {// code for IE6, IE5
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.open("GET", "setleistung.php?i=" + anlid + "&l=" + zleistung);
                xmlhttp.send();        
            } else {
                alert("Bitte die Leistung nur im erlaubten Rahmen eingeben.");
            }
        }
    }
    Kurz zur Erklärung, auf einer PHP Seite ist ein Button der angeklickt wird. Der Min/Max Wert entstammt einer Datenbank mit den BHKW Daten.

  • #2
    Würde zleistung, welche bei dir ein String ist mal mit
    https://www.w3schools.com/jsref/jsref_parseint.asp

    behandeln. Die Vergleichswerte ebenfalls

    Des Weiteren könnte man sich im alert des else-Zweiges nicht mur einen Text, sondern auch zleistung und die Länge von zleistung ausgeben lassen, bzw. das ganze debuggen

    Und wenn lmax=1000000 ist, warum sollten dann Werte >1000000 funktionieren?
    Zuletzt editiert von Christian Marquardt; 23.01.2018, 11:30.
    Christian

    Comment


    • #3
      Danke. Mit parseint ist mein Problem gelöst. jetzt funktioniert der Vergleich. Und wieder mal hast du mir den Tag gerettet, vielen Dank.
      Ahja, die Länge der ganzen Werte war Okay. Aber deine letzte Frage versteh ich dennoch nicht, hab ja gemeint das Werte kleiner 1Mio nicht funktionieren, größer 1Mio hab ich nicht erwähnt.
      Zuletzt editiert von HarGrove; 23.01.2018, 11:58. Reason: Tippfehler

      Comment


      • #4
        Nun
        Bei Zahlen kleiner 1000000 ist alles gut.
        daraus nahm ich an, größer ist ein Problem
        Christian

        Comment

        Working...
        X