如何在Perl中向下舍入到给定的小数位数

Vij*_*ati 1 floating-point perl

我想向下舍入到N个小数位(两个位置为分).例如

5.0166 => 5.01
0.933  => 0.93
Run Code Online (Sandbox Code Playgroud)

sprintf舍入到最接近的数字,所以不会产生我想要的.例如

sprintf("%.2f", 5.0166) => 5.02
Run Code Online (Sandbox Code Playgroud)

小智 5

使用POSIX :: floor(http://perldoc.perl.org/POSIX.html):

use POSIX;
$original = 5.0166;
$rounded = POSIX::floor($original*100)/100;
print "$rounded\n";
Run Code Online (Sandbox Code Playgroud)

如果你处理负数而你宁愿向零舍入而不是向下舍入,那么使用:

$rounded = ($original < 0)?(POSIX::ceil($original*100)/100)
                          :(POSIX::floor($original*100)/100);
Run Code Online (Sandbox Code Playgroud)

要不就

$rounded = int($original*100)/100;
Run Code Online (Sandbox Code Playgroud)