[gelöst] Perl-Meldung bei Division durch 0 vermeiden

Begonnen von TomLee, 04 Februar 2021, 12:54:08

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

gibt es eine Möglichkeit diese Meldung:

Error evaluating hmod_sq_bla userReading percent: Illegal division by zero at ./FHEM/99_bla_myUtils.pm line 38.


zu vermeiden, wenn ich vorübergehend meiner Funktion :

sub usrpercent {

my $name = shift;
my $number = shift;
my $ek = shift;
my $ep=$number*$ek;
my $k=ReadingsNum($name,"blibla","0")*$number;
my $p=sprintf('%.2f',($k/$ep-1)*100);

return $p;
}


in $number und $ek eine 0 übergebe ?

Das Device vorübergehend zu deaktivieren ist nicht der Weg den ich suche, das Device soll weiterhin in einer readingsGroup dargestellt werden, nur halt mit Null.

Gruß

Thomas

Otto123

Hallo Thomas,

Also nur für die FHEM Kommandozeile zum testen 8)
{my $ep=0;;$ep='DeinGewünschterWert' if ($ep==0)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

#2

sub usrpercent {

my $name = shift;
my $number = shift;
my $ek = shift;
my $ep=$number*$ek;
my $k=ReadingsNum($name,"blibla","0")*$number;
my $p= ($ek == 0) ? "0.00" : sprintf('%.2f',($k/$ep-1)*100);

return $p;
}



Aber der Threadtitel ist mal wieder eine Vollkatastrophe.


--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Danke, beiden.

Zitat
Aber der Threadtitel ist mal wieder eine Vollkatastrophe.

Die Frage hätt ich mir auch besser gespart, erst nach dem stellen hab ich mir Gedanken gemacht, um dann selbst auf deinen Lösungsansatz zu kommen.

betateilchen

Zitat von: TomLee am 04 Februar 2021, 13:28:28
erst nach dem stellen hab ich mir Gedanken gemacht,

Das beweist meine Theorie...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Zumal es nichts mit Perl zu tun hat :)
Allgemeine Frage(n) zum rechnen ...

Was soll rauskommen bei der Division durch null? Udos Vorschlag ist eine Variante  - meine Vorschlag wäre eher 99999999999999
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: Otto123 am 04 Februar 2021, 19:29:34
Udos Vorschlag ist eine Variante  - meine Vorschlag wäre eher 99999999999999

Das widerspricht aber dem geplanten Vorhaben...

Zitat von: TomLee am 04 Februar 2021, 12:54:08
das Device soll weiterhin in einer readingsGroup dargestellt werden, nur halt mit Null.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!