perl floor函数给出错误undefined subroutine&main :: floor

Cur*_*ous 1 perl

我是perl的新手,以下代码片段无法正常运行并出现以下错误.我试过谷歌搜索,但没有得到任何解决方案.

$halfSize = floor($halfSize);
Run Code Online (Sandbox Code Playgroud)

未定义的子程序&main :: floor调用

Bor*_*din 6

floor 不是Perl中的内置运算符

您可以Math::Utils像这样使用模块

use strict;
use warnings 'all';
use feature 'say';

use Math::Utils 'floor';

say floor(1.5);
say floor(-1.5);
Run Code Online (Sandbox Code Playgroud)

产量

1
-2
Run Code Online (Sandbox Code Playgroud)

您可能需要安装,Math::Utils因为它不是核心模块.该POSIX模块还有一个floor功能,应作为Perl的一部分安装,以便您可以通过编写use POSIX 'floor'来使用它.但它是一个巨大的模块,包含许多你不需要的功能.在我的系统上,Math::Utils占用1MB而POSIX则为1.7MB.这是你的选择

或者,您可以floor根据内置运算符编写自己的子例程int

sub floor {
    my ($n) = @_;
    my $int_n = int($n);
    $n < 0 && $int_n != $n ? $int_n - 1: $int_n;
}
Run Code Online (Sandbox Code Playgroud)