舍入Math :: BigFloat编号

时间:2013-05-27 15:54:35

标签: perl rounding

根据我的理解阅读Math::BigFloat的文档,以下内容应该是对数字进行舍入的代码,但它似乎不起作用。

#!/usr/bin/perl

use strict;
use warnings;
use Math::BigFloat;

my $x = Math::BigFloat->new('2.3');
$x->ffround(0, '+inf');
print "$x\n"; # -> 2

我应该怎么做才能始终将数字向上,例如,在此示例中,将数字3作为输出。

1 个答案:

答案 0 :(得分:5)

如果从两个可能结果的中间四舍五入,则舍入模式仅影响行为:

#!/usr/bin/perl
use warnings;
use strict;

use Math::BigFloat;

my $n = Math::BigFloat->new('2.5');

print $n->copy->ffround(1, 'zero');           # 2
print $n->copy->ffround(1, '+inf');           # 3
print $n->copy->ffround(1, 'odd');            # 3
print $n->copy->ffround(1, 'even');           # 2

你想要的是bceil

my $m = Math::BigFloat->new('2.3');

print $m->copy->bceil();                      # 3