AlexBausW: Auf x-Stellen runden

Beitrag lesen

Hallo Frank,

»»   Wie runde ich mit Perl auf x-Stellen (oder auf ganze Zahlen...)

Die Antwort auf dieses Problem steht in der Forumsauslese.
<../../sfausles/tsfa_tef.htm#a1>

Ich hab` mir unverschämterweise erlaubt <g>, die Vorschläge von Calocybe und Wolfgang zu einer kleinen Subroutine zusammenzufassen, die für negative wie positive Zahlen funktioniert, und auf beliebig viele Stellen rundet:

sub Round ($ $) {
  return int($_[0] * 10**(defined $_[1] ? $_[1] : 0) + ($_[0] >= 0 ? +0.5 : -0.5)) / 10**(defined $_[1] ? $_[1] : 0);
}

Es tut mir allerdings leid, daß ich momentan total auf Einzeiler abfahre ;-)
Ein wenig weniger kryptisch ;-) ist folgendes:

sub Round ($ $) {
  my ($num, $len) = @_;
  $len = 0 unless defined $len;
  my $add = $num >= 0 ? +0.5 : -0.5;
  my $rounded = int($num * 10**$len + $add) / 10**$len;
  return $rounded;
}

Vielleicht ersetzt das ja mal die Version in der Auslese :-)

Gruß AlexBausW

P.S.: Das ganze ist ohne Gewähr, funktioniert aber zumindest bei mir ;-)