Author image Frank Seitz
and 1 contributors

NAME

Prty::Math - Mathematische Funktionen

BASE CLASS

Prty::Object

METHODS

gcd() - Größter gemeinsamer Teiler

Synopsis

    $gcd = $class->gcd($a,b);

Description

Berechne den größten gemeinsamen Teiler (greatest common divisor) der beiden natürlichen Zahlen $a und $b und liefere diesen zurück. Die Methode ist nach dem Euklidschen Algorithmus implementiert.

roundTo() - Runde Zahl auf n Nachkommastellen

Synopsis

    $y = $class->roundTo($x,$n);
    $y = $class->roundTo($x,$n,$normalize);

Description

Runde $x auf $n Nachkommastellen und liefere das Resultat zurück.

Ist $normalize "wahr", wird die Zahl nach der Rundung mit normalizeNumber() normalisiert.

Bei $n > 0 rundet die Methode mittels

    $y = sprintf '%.*f',$n,$x;

bei $n == 0 mittels roundToInt().

roundToInt() - Runde Zahl zu Ganzer Zahl (Integer)

Synopsis

    $n = $class->roundToInt($x);

Description

Runde Zahl $x zu ganzer Zahl und liefere das Resultat zurück, nach folgender Regel:

Für Nachkommastellen < .5 runde ab, für Nachkommastellen >= .5 runde auf. Für negative $x ist es umgekehrt.

Folgender Ansatz funktioniert nicht

    $n = sprintf '%.0f',$x;

denn dieser gibt inkonsistente Ergebnisse

    0.5 => 0
    1.5 => 2
    2.5 => 2

roundMinMax() - Runde Breichsgrenzen auf nächsten geeigneten Wert

Synopsis

    ($minRounded,$maxRounded) = $class->roundMinMax($min,$max);

Description

Die Methode rundet $min ab und $max auf, so dass geeignete Bereichsgrenzen für eine Diagrammskala entstehen.

Sind $min und $max gleich, schaffen wir einen künstlichen Bereich ($min-1,$max+1).

Die Rundungsstelle leitet sich aus der Größe des Bereichs $max-$min her.

Examples

8.53, 8.73 -> 8.5, 8.8

8.53, 8.53 -> 7, 10

VERSION

1.103

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2017 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.