Как вы округляете число с плавающей запятой в Perl? - PullRequest
167 голосов
/ 07 октября 2008

Как можно округлить десятичное число (с плавающей запятой) до ближайшего целого числа?

, например

1.2 = 1
1.7 = 2

Ответы [ 12 ]

0 голосов
/ 09 ноября 2011

Мое решение для sprintf

if ($value =~ m/\d\..*5$/){
    $format =~ /.*(\d)f$/;
    if (defined $1){
       my $coef = "0." . "0" x $1 . "05";    
            $value = $value + $coef;    
    }
}

$value = sprintf( "$format", $value );
0 голосов
/ 13 августа 2009
cat table |
  perl -ne '/\d+\s+(\d+)\s+(\S+)/ && print "".**int**(log($1)/log(2))."\t$2\n";' 
...