如何将十进制数(浮点数)舍入为最接近的整数?
例如:
1.2 = 1
1.7 = 2
发布于 2008-10-07 13:54:10
您可以使用像Math::Round这样的模块
use Math::Round;
my $rounded = round( $float );
或者你可以用一种粗糙的方式:
my $rounded = sprintf "%.0f", $float;
发布于 2008-10-07 15:37:03
如果您决定使用printf或sprintf,请注意它们使用的是Round half to even方法。
foreach my $i ( 0.5, 1.5, 2.5, 3.5 ) {
printf "$i -> %.0f\n", $i;
}
__END__
0.5 -> 0
1.5 -> 2
2.5 -> 2
3.5 -> 4
发布于 2014-09-12 22:13:38
下面将正数或负数四舍五入到给定的小数位:
sub round ()
{
my ($x, $pow10) = @_;
my $a = 10 ** $pow10;
return (int($x / $a + (($x < 0) ? -0.5 : 0.5)) * $a);
}
https://stackoverflow.com/questions/178539
复制相似问题