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);
}
Zitatmy $TempVorlauf={sprintf("%.2f", $TempVorlauf)};
}
Du musst die {} weglassen:
my $TempVorlauf=sprintf("%.2f", $TempVorlauf);
MfG, MisterEltako.
Danke,
leider folgendes Ergebnis:
2013.02.26 22:23:06 3: Temperatur Vorlauf:.2f
???
VG
Olaf
Hallo,
habs doch noch hin bekommen. Lösung:
my $TempVorlauf=sprintf("%%.2f", $TempVorlauf);
wieder etwas dazu gelernt ,-))
VG
Olaf