funktioniert der Befehl FRAC bei float?

Grafik Display versteht kein float

tbegle
Benutzer
Avatar
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

funktioniert der Befehl FRAC bei float?

 · 
Posted: 14.09.2020 - 12:16  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: funktioniert der Befehl FRAC bei float?

 · 
Posted: 14.09.2020 - 13:39  ·  #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
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

Re: funktioniert der Befehl FRAC bei float?

 · 
Posted: 15.09.2020 - 11:15  ·  #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
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: funktioniert der Befehl FRAC bei float?

 · 
Posted: 15.09.2020 - 15:28  ·  #4
Hallo Toni,

Schau mal im Handbuch unter Kapitel 4.14:
Quote
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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: funktioniert der Befehl FRAC bei float?

 · 
Posted: 17.10.2020 - 10:31  ·  #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
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   94   108 · Page-Gen-Time: 0.029339s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI