Fix for 1028710: floor() fails on floor(log(1000)/log(10))

This commit is contained in:
Brian Fraser fraserb@gmail.com
2012-08-06 11:37:51 -03:00
parent f8c375a249
commit d77a3a19f6
6 changed files with 28 additions and 14 deletions

View File

@@ -5366,7 +5366,7 @@ sub _chunk_char {
}
my $n_chunks = $args{rows_in_range} / $args{chunk_size};
my $interval = floor($n_values / $n_chunks) || 1;
my $interval = floor(($n_values+0.00001) / $n_chunks) || 1;
my $range_func = sub {
my ( $self, $dbh, $start, $interval, $max ) = @_;
@@ -5860,7 +5860,7 @@ sub base_count {
return $symbols->[0] if $n == 0;
my $highest_power = floor(log($n)/log($base));
my $highest_power = floor(log($n+0.00001)/log($base));
if ( $highest_power == 0 ){
return $symbols->[$n];
}
@@ -5872,11 +5872,10 @@ sub base_count {
my @base_multiples;
foreach my $base_power ( reverse @base_powers ) {
my $multiples = floor($n / $base_power);
my $multiples = floor(($n+0.00001) / $base_power);
push @base_multiples, $multiples;
$n -= $multiples * $base_power;
}
return join('', map { $symbols->[$_] } @base_multiples);
}