Ankündigung

Einklappen
Keine Ankündigung bisher.

Termperaturwerte auf 1. Nachkommastelle runden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Termperaturwerte auf 1. Nachkommastelle runden

    guten Morgen, ich habe die Herausforderung, die Temperaturwerte zu runden.
    Eine Darstellung von z.b.19,68 Grad hat für mich wenig Aussagekraft, beim Abrunden auf 19 halte ich aber auch nicht für richtig.
    Deshalb hätte ich gerne die erste Nachkommastelle angezeigt, und zwar gerundet in 0,5-er Schritten.
    Da wäre dann alles < 19,25 eben 19,0
    >= 19,25 und < 19,75 dann 19,5
    und >=19,75 dann 20

    Ich komme nicht drauf, hat da einer ein MusterMakro?

    never fummel a running system...

    #2
    Stringconvert benutzen gibt dafür den befehl.

    Kommentar


      #3
      stringformat

      Kommentar


        #4
        Stringformat+Glühwein=stringconvert 😀

        Kommentar


          #5

          Kommentar


            #6
            stingformat rundet in 0,5er Schritten??
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Glühwein...

              Vermutlich sowas in der Art (gerade keine Testmöglichkeit):

              Code:
              zahl=19.68
              stringformat(floor(zahl*2.0+0.5)/2.0, 4, 6, 0, 1)

              Kommentar


                #8
                Zitat von ;n2005031
                stringformat(floor(zahl*2.0+0.5)/2.0, 4, 6, 0, 1)

                super, danke, das geht.
                Frage noch dazu:
                warum ist die 2.0 und die 0.5 nicht auch f16?
                oder ist das unnötig?
                never fummel a running system...

                Kommentar


                  #9
                  Irgendeine Zahl mit . ist immer f16, genauso wie eine Zahl ohne irgendwas immer u08 ist.

                  Kommentar


                    #10
                    Nachdem ich im EibPC Handbuch nur Aufrunden und Abrunden gefunden habe, bin ich über die Google Sucher bei diesem Beitrag gelandet.
                    Da ich eine ähnliche Frage habe, mache ich mal weiter:

                    Ich will in der Visu die Temperatur auf eine Nachkommastelle runden.
                    Wie mache ich es, aus 16,44 °C 16,4 °C und aus 16,45 °C dann 16,5 °C zu berechnen? Ich hätte jetzt eine Funktion Runden mit Parametern Zahl und Nachkommastellen erwartet, die leider nicht existiert.

                    Kommentar


                      #11
                      War bisher noch nicht relevant, weil es meist um die Darstellung geht und die erledigt ja die stringformat.

                      Du kannst floor(n*10. +0.5)/10. rechnen, dann sollte die Zahl passen.

                      Kommentar


                        #12
                        Danke. Temperatur auf eine Nachkommastelle berechnen, finde ich jetzt nicht so ungewöhnlich. Ich kenne Temperaturangaben nicht anders und auch die MeTas zeigen die Temperatur so an. Wie das im Experten mit floor() geht, weiß ich dann jetzt. Ich habe mich daran mal in der Visu versucht, aber bekomme es nicht hin. Bis zum Ende von Abrunden() ist alles f16, danach zur Ausgabe in c14.
                        grafik.png

                        Toll wäre natürlich eine neue Berechnungsoption Runden() mit den Parametern Wert und Nachkommastellen.

                        Kommentar


                          #13
                          Hallo,

                          ich möchte das Thema nochmal aufgreifen und hier im Forum um Unterstützung bitten. Ich möchte ebenfalls Werte mit einer Nachkommastelle anzeigen und vorher mathematisch Auf- bzw. Abrunden. Da es leider keine Funktion dafür gibt, habe ich mir folgenden Code erstellt.

                          IPGetClient_evcc(status_String,192.168.0.240,evcc_ status,1000,evcc_status_Start,500)
                          if status_StringRecieved then {
                          PosStart_evcc = find(status_StringRawData, ${$, 0u16);
                          PosEnde_evcc = find(status_StringRawData, $}$, 0u16);
                          status_StringRawData = split(status_StringRawData, PosStart_evcc, PosEnde_evcc);
                          PVPower = floor(convert(parsejson(status_StringRawData, $/pvPower$, $$c10), 0f16) * 10.0f16 + 0.5f16)/10.0f16;
                          PVPowerStr = parsejson(status_StringRawData, $/pvPower$, $$c10);
                          PVPowerf16 = convert(PVPowerStr, 0f16);
                          PVPowerRech = floor(PVPowerf16 * 10.0f16 + 0.5f16)/10.0f16;
                          }endif​
                          Der Code extrahiert aus einer http Webabfrage die Werte aus "status_StringRawData" mittels der Funktion "parsejson". Das funktioniert soweit.
                          Im Debugger das Ergebnis für "PVPower". Bei der Konvertierung des String "35,543" nach Float16 entsteht "35,54". Allerdings kann ich das Ergebnis von "PVPower" bzw. "PVPowerRech" (testweise angelegt) nicht nachvollziehen.

                          Mein erwarteter Wert: 35,54 * 10 = 355,4 + 0,5 = 355,9 --> Floor(355,9) = 355,0 / 10 = 35,5.

                          Das Ergebnis liefert allerdings 35,62 aus. Wie aus einem floor Wert nach Division durch 10 ein zweite Nachkommastelle entsteht, erschließt sich mir nicht. In der Hilfe steht zu floor: Rückgabwert: Größte Ganzzahl ≤ Variable ausgeben.

                          Wo ist mein Fehler? Meine Formel ist doch mit der von foobar0815 identisch.

                          Grundsätzlich schließe ich mich skyynet an. Eine Funktion im EibPC für das mathematische Runden auf eine Nachkommastelle inkl. der Anzeige von nur einer Nachkommastelle, wäre hilfreich. Das würde den Aufwand für eine schöne und korrekt Darstellung in der Visu deutlich vereinfachen.

                          Danke!​
                          image.png

                          Kommentar

                          Lädt...
                          X