NEWS

Vergleich von zwei Datenpunkten funktioniert nicht


  • Hallo Zusammen,
    bin Neuling im Thema ibroker und habe gleich mal ein Problem.
    Habe zwei identische Objekte erstellt und wollte diese auf ihren Wert abfragen und vergleichen.
    Eingestellt sind sie als Zeichenkette, habe aber auch schon zahl und string ausprobiert.

    d9d1621c-2067-417a-90f1-5f0296a3ab45-grafik.png
    Das erste Objekt soll eine Temperatur simulieren, das zweite den Grenzwert z.B. zur Warnung das die Temp überschritten wurde.
    7da045c9-c993-490a-87f2-06664aa99f19-grafik.png
    Soweit passt es auch. Ist der erste Wert "Temperatur" (40) größer als der eingestellte "Genzwert" (27) wird der 'basic bar' Balken rot und im 'Basic html widget' steht "schlecht".
    Anders herum passt es auch.
    85de1e4a-17db-4cf2-a6bc-bb86c4241899-grafik.png
    So, jetzt aber ein komischer Effekt.
    Stelle ich den Grenzwert zwischen 5 und 10 gibt es die falsche Meldung.
    Hier als Beispiel der Grenzwert 6. Eigentlich müsste jetzt der Balken rot sein und im Feld "schlecht" stehen.
    01b65738-6530-4b4b-80a4-78efea13d386-grafik.png
    Im 'Basic html widget' habe ich folgendes eingetragen, genauso wie im 'basic bar' als Farbe

    {v1:javascript.0.scriptEnabled.common.Test_Wert; v2:javascript.0.scriptEnabled.common.Test_Wert_Variabel;v1 < v2 ? "gut" : "schlecht"}
    

    Vielen Dank für eure Hilfe


  • @iberlegu sagte:

    So, jetzt aber ein komischer Effekt.

    Das ist nicht komisch, sondern bei einem String-Vergleich normal: Funktioniert nur bei gleicher Stellenzahl (führende 0).


  • Hab ich ich mir auch gedacht aber!!!
    bf4f7a91-d40f-4d79-8a51-9875a0171cd6-grafik.png


  • @iberlegu
    Ein Stringvergleich erfolgt zeichenweise von vorn nach hinten und bricht ab, wenn eine Bedingung falsch ist, in dem Beispiel schon nach dem ersten Zeichen, da "2" < "1" falsch ist.
    Damit die Vergleiche funktionieren, müssen die Werte in Zahlen gewandelt werden.

    parseFloat(v1) < parseFloat(v2) ? "gut" : "schlecht";
    

  • @paul53 sagte in Vergleich von zwei Datenpunkten funktioniert nicht:

    parseFloat(v1) < parseFloat(v2) ? "gut" : "schlecht"

    Perfekt
    Vielen Dank!!

Suggested Topics

  • 1
  • 12
  • 2
  • 3
  • 15
  • 5
  • 9
  • 4

1.6k
Online

34.9k
Users

40.9k
Topics

561.4k
Posts