File Coverage

lib/Spreadsheet/Engine/Function/ROUND.pm
Criterion Covered Total %
statement 17 17 100.0
branch 2 2 100.0
condition 2 2 100.0
subroutine 7 7 100.0
pod 3 3 100.0
total 31 31 100.0


line stmt bran cond sub pod time code
1             package Spreadsheet::Engine::Function::ROUND;
2              
3 28     28   159 use strict;
  28         62  
  28         980  
4 28     28   141 use warnings;
  28         55  
  28         744  
5              
6 28     28   145 use base 'Spreadsheet::Engine::Fn::math';
  28         53  
  28         9052  
7              
8 198     198 1 531 sub argument_count { -1 => 2 }
9 195     195 1 590 sub signature { 'n', 'n' }
10 195     195   611 sub _result_type_key { 'oneargnumeric' }
11              
12             sub calculate {
13 195     195 1 6331 my ($self, $value, $precision) = @_;
14 195 100       579 my $rounding = ($value >= 0 ? 0.5 : -0.5);
15 195   100     787 my $decimalscale = 10**int($precision || 0);
16 195         399 my $scaledvalue = int($value * $decimalscale + $rounding);
17 195         4181 return $scaledvalue / $decimalscale;
18             }
19              
20             1;
21              
22             __END__