Hauptmenü

Dezimalstellen begrenzen

Begonnen von ollir, 26 Februar 2013, 21:29:29

Vorheriges Thema - Nächstes Thema

ollir

Hallo,

bekomme es nicht hin ein Wert auf zwei Kommastellen zu begrenzen.
Habe einiges aus dem Forum ausprobiert.
Stand ist:

my $TempVorlauf=((($TempAussen - 20) * (0 - 1) * $Steilheit)+20);
my $TempVorlauf={sprintf("%.2f", $TempVorlauf)};

bingt jedoch folgende meldung im Log:

2013.02.26 21:27:06 3: Temperatur Vorlauf:HASH(0xc61148)

Kann jemand helfen?

VG Olaf

EDIT: das ganze Konstruckt sieht so aus:
n_Vorlauf {
my $TempVorlauf=0;
my $TempAussen=ReadingsVal("temp_aussen","temp","nA");
my $TempVorlauf_ist=ReadingsVal("vorlauf_ist","temp","nA");
my $Steilheit=0.95;
my $TempVorlauf=((($TempAussen - 20) * (0 - 1) * $Steilheit)+20);
my $TempVorlauf={sprintf("%.2f", $TempVorlauf)};
if ($TempVorlauf < $TempVorlauf_ist) {fhem("set Rel3 on; set Rel2 on; sleep 0.9; set Rel2 off")};
if ($TempVorlauf > $TempVorlauf_ist) {fhem("set Rel3 off; set Rel2 on; sleep 0.9; set Rel2 off")};
fhem("set Vorlauf Vorlauf_Soll: $TempVorlauf");
fhem("set Vorlauf Vorlauf_ist: $TempVorlauf_ist");
fhem("set Vorlauf Temp_Aussen: $TempAussen");
fhem("set Vorlauf Kennlinie: $Steilheit");
Log(3,"Temperatur Vorlauf:" .  $TempVorlauf);
Log(3,"Temperatur Vorlauf_ist:" .  $TempVorlauf_ist);
Log(3,"Temperatur Aussen:" .  $TempAussen);
Log(3,"Steilheit Kennlinie:" .  $Steilheit);
}

MisterEltako

Zitatmy $TempVorlauf={sprintf("%.2f", $TempVorlauf)};
}

Du musst die {} weglassen:

my $TempVorlauf=sprintf("%.2f", $TempVorlauf);


MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

ollir

Danke,

leider folgendes Ergebnis:

2013.02.26 22:23:06 3: Temperatur Vorlauf:.2f

???

VG
Olaf

ollir

Hallo,

habs doch noch hin bekommen. Lösung:

my $TempVorlauf=sprintf("%%.2f", $TempVorlauf);

wieder etwas dazu gelernt ,-))

VG
Olaf