funktioniert der Befehl FRAC bei float?

Grafik Display versteht kein float

tbegle
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Beiträge: 150
Dabei seit: 01 / 2018
Betreff:

funktioniert der Befehl FRAC bei float?

 · 
Gepostet: 14.09.2020 - 12:16 Uhr  ·  #1
Hallo Power User,

Mein Grafik Display versteht kein float!

Ich möchte nun doch die Temp. zumindest mit einer Nachkommastelle anzeigen

HDC_T := 165.00 * float(WO)/65536-40; // calculate the temperature in float!
HDC_Tw := word(HDC_T); // für das Display in °C ok
nk := word(frac(HDC_T)); // Nachkommastelle F! (0)
write(serout,'PAR.n28.val='+intToStr(nk:1)+E); // nicht angezeigt!

Gruss
Toni
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: funktioniert der Befehl FRAC bei float?

 · 
Gepostet: 14.09.2020 - 13:39 Uhr  ·  #2
Hi Toni,

das geht einfacher:
Code

Var Temp:Integer;
    Temperatur:Float;

Temp:=Trunc(Temperatur*10);
.... IntToStr(Temp:5:1:' ');

Ausgabe Temp mit gesamt 5 Stellen und einer Nachkommastelle. D.h. 3 Vorkommastellen, der Punkt und die Nachkommastelle = 5 Stellen. Du kannst auch vorher noch Round zum runden verwenden.

Gruss
Harry

[Edit]Sollte auch direkt gehen:
Code
FloatToStr(Temperatur:5:1:' ');

..... mit dem ' ' wird immer mit 5 Stellen ausgegeben und mit Leerzeichen vorneweg aufgefüllt.
tbegle
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Beiträge: 150
Dabei seit: 01 / 2018
Betreff:

Re: funktioniert der Befehl FRAC bei float?

 · 
Gepostet: 15.09.2020 - 11:15 Uhr  ·  #3
Danke Harry mit trunc funktioniert es super - aber mit dem Nextion Display, da es neben float auch kein Komma versteht, musste ich
Temp z.B. 24.6 '.' als Text! + Nachkommastelle (isolieren! - ein Gewürge!)

Einen schönen Tag
Toni
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: funktioniert der Befehl FRAC bei float?

 · 
Gepostet: 15.09.2020 - 15:28 Uhr  ·  #4
Hallo Toni,

Schau mal im Handbuch unter Kapitel 4.14:
Zitat
4.14.1 Dezimal Separator
Diverse String Konvertierungen arbeiten mit einem Dezimal Punkt. Dieser Dezimal Punkt ist standardmässig das Zeichen ”.” Dieses Zeichen kann redefiniert werden, z.B. zum ”,” um speziellen Anforderungen gerecht zu werden. Hierzu muss im Define Block folgendes Statement eingefügt werden:
Define DecimalSep = ‘.‘;


Hier findest Du viele Möglichkeiten um eine einfache Formatierung zu machen, ohne "Gewürge"

Thorsten
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: funktioniert der Befehl FRAC bei float?

 · 
Gepostet: 17.10.2020 - 10:31 Uhr  ·  #5
Hi Toni,

jetzt, nachdem ich es nochmal gelesen haben, hab ichs verstanden :D. Aber was spricht dagegen, alles als Text zu übergeben? Ein FloatToStr wandelt doch, richtig angewendet, alles in einen Text um und formatiert auch die Länge.
Was ich gerne mache, wenn ich mit Integer weiter arbeiten will und eine Nachkommastelle brauche ist Integer:=Round(Float*10) und die Ausgabe mit IntToStr(Integer:5:1:' ') ..... Ausgabe gesamt 5 Stellen inkl. Dezimalpunkt, eine Nachkommastelle.

Gruss
Harry
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   94   108 · Page-Gen-Time: 0.025397s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI