有人知道不是四舍五入而是四舍五入的模块吗?
4.444435 -> 4.44
4.444445 -> 4.45
4.445444 -> 4.45
4.443000 -> 4.44
的sprintf
,Math::BigFloat
,Math::BigRat
不能这样做=(
我仍然不了解规则的工作原理,但是bfround
从Math :: BigFloat进行操作可能会返回您想要的结果。
#!/usr/bin/perl
use warnings;
use feature qw{ say };
use Math::BigFloat;
sub myround {
my $bi = 'Math::BigFloat'->new("$_[0]");
for (my $l = length $bi; $l > 1; --$l) {
$bi->bfround(-$l, '+inf');
}
$bi
}
use Test::More tests => 8;
is myround(4.444435), 4.44;
is myround(4.444445), 4.45;
is myround(4.445444), 4.45;
is myround(4.443000), 4.44;
is myround(3.554444), 3.55;
is myround(3.554445), 3.56;
is myround(3.544445), 3.55;
is myround(3.555550), 3.56;