Simple round function for Perl

Heres a usefull round function for Perl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sub round {
	my @number = split /\./, shift;
	my $precision = shift || 0;
	return $number[0] if ! $number[1];
	my $decimal = $number[1];
	if(length ($decimal+0) < ($precision+0)) {
		return $number[0].".".$number[1];
	}
	my $rounder = substr $number[1], $precision, 1;
	if(($precision + 0) == 0) {
		if(($rounder + 0) >= 5) {
			return $number[0]+1;
		}
		return $number[0];
	}
	my $base = $number[0].'.'.substr $number[1], 0, $precision + 0;
	if(($rounder + 0) >= 5) {
		my $rounded = '.'.('0' x ($precision - 1)).'1';
		return $base + $rounded;
	}
	return $base;
}

Usage is simple:

round( $number, $precision );

  1. No comments yet.

  1. No trackbacks yet.

The featured post is HERE