舍入Math :: BigFloat编号

Jua*_*rro 2 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
Run Code Online (Sandbox Code Playgroud)

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

cho*_*oba 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
Run Code Online (Sandbox Code Playgroud)

你想要的是bceil:

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

print $m->copy->bceil();                      # 3
Run Code Online (Sandbox Code Playgroud)