round Funktion - die Nächste

Begonnen von Sidey, 17 Januar 2023, 23:10:36

Vorheriges Thema - Nächstes Thema

Sidey

Hallo zusammen,

ich habe eine Roundfunktion in einem separatem Package eingecheckt:

FHEM::Core::Utils::Math::round(100/3,3);


Die Roundfunktion funktioniert nicht anders als die in 99_Utils.pm. Letztere liegt allerdings im Namespace main und diese nicht. Warum ist das wichtig?

Es gibt zwei Perl Packages (POSIX und Math::Round) die beide auch eine round routine nach main exportieren.
Manch einer kann es ja jetzt schon ahnen, was dann passiert. FHEM Module werden ja gerne auch in main gelegt.

Kurz zusammengefasst, es kann sein, dass man als Entwicker denkt die round aus 99_utils aufzurufen, aber irgendein anderer Entwickler hat das Package  POSIX oder Math::Round importiert. Es kann auch ein User sein, der es in der 99_myUtils.pm lädt. Dabei wird halt auch eine round routine in main gesetzt. Da es natürlich nur eine unter dem Namen geben kann führt das zu seltsamen Ergebnissen.

Da ich schon mehrfach am Glauben verzweifelt bin, dass bei manchen Usern meine Module ganz andere Ergebnisse errechnen, dachte ich mir, das sich mal eine Lösung für alle anbiete.

Empfehlung meinerseits:  round aus der 99_Utils durch FHEM::Core::Utils::Math::round ersetzen.

https://svn.fhem.de/trac/browser/trunk/fhem/lib/FHEM/Core/Utils/Math.pm?rev=27076
Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker