Hallo,
für eine Umwandlung einer Zahl bei eine data-type label verwende ich ein data-substitution um Tausendertrennung einzufügen.
den regex-String s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g habe ich irgendwo, evt. sogar hier im Forum, gefunden und geklaut 8)
Jetzt kommt mein Problem: das ursprüngliche Reading hat normalerweise eine Nachkommastelle, die aber mit 10% Wahrscheinlichkeit Null ist und dann weggelassen ist :( ich habe schon diverse Versuche gemacht den regex zu erweitern, kriege es aber nicht hin.
Wer kann mir helfen?
Danke schon einmal, Nobby
Das ist doch ein Thema, das sich über die localize Funktionen von perl lösen lassen muss und nicht per regex?
Jetzt hast du das eine ? in meinem Kopf durch ein anderes ersetzt ::) :-[
ich steh n bissl aufm Schlauch, kannst du mal 2-3 Beispiele bringen? ^^
Meinst du solche Beispiele?
123456.7 wird durch Substitution 123,456.7
1234567 wird 1,234,567 soll aber 1,234,567.0 sein
Damit die Werte in einer Tabelle schöner untereinander stehen
Da ich mich heute wieder über die Darstellung geärgert habe und dann beim googeln meinen eigenen post gefunden habe ...
Kann mir da niemand helfen?
PS allen die besten Wünsche für ein gesundes Jahr 2022 !!
Für ein tausender-Trennzeichen und das ersetzen des Dezimalpunkts durch ein -komma nutze ich diese sub in der myutils:
sub tausender {
my $zahl = shift;
my $text = reverse $zahl;
$text =~ s/\./\,/g; #replace decimal point by decimal comma
$text =~ s/(\d\d\d)(?=\d)(?!\d*\,)/$1./g;
return scalar reverse $text;
}
Für feste Nachkommastellen kannst du zB sprintf (https://perldoc.perl.org/functions/sprintf) nutzen:
sprintf("%.1f", $number);
Das ganze kann man zusammen aufrufen:
tausender(sprintf("%.1f", ReadingsNum(device,reading,0)))
Edit: ich lese gerade, dass es um FTUI geht. Mein Vorschlag kann dann nur mit einem userReading in FHEM funktionieren.