Perl确实内置了数学函数:只是它对您可能需要的函数的想法与 1970 年代的小型计算机相当。我能找到的都有:
#!/usr/bin/env perl
# maths_builtins.pl - some (all?) of the libm functions built in to Perl
# scruss - 2021-05
my $val = -1.234;
print 'abs(', $val, ')', "\t= ", abs($val), "\n";
my $pi = 4 * atan2( 1, 1 );
print '4*atan2(1,1)', "\t= ", $pi, "\t(= π)", "\n";
print 'cos(π/6)', "\t= ", cos( $pi / 6 ), "\n";
my $e = exp(1);
print 'exp(1)', "\t\t= ", $e, "\t(= e)", "\n";
print 'int(', $val, ')', "\t= ", int($val), "\n";
print 'log(e)', "\t\t= ", log($e), "\n";
print 'sin(π/6)', "\t= ", sin( $pi / 6 ), "\n";
print 'sqrt(3)/2', "\t= ", sqrt(3) / 2, "\n";
print 'sqrt(3)**2', "\t= ", sqrt(3)**2, "\n";
exit;
导致:
abs(-1.234) = 1.234
4*atan2(1,1) = 3.14159265358979 (= π)
cos(π/6) = 0.866025403784439
exp(1) = 2.71828182845905 (= e)
int(-1.234) = -1
log(e) = 1
sin(π/6) = 0.5
sqrt(3)/2 = 0.866025403784439
sqrt(3)**2 = 3
请注意pow()
,Perl 没有函数,而是有**
运算符,就像 FORTRAN 一样。你没有得到一个tan()
函数,因为那是sin($x)/cos($x)
. 如果您需要其他超越函数,这就是他们将三角函数表(PDF,第 39 页)放在所有优秀编程书籍中的原因。
我不记得曾经使用过或需要过ceil()
我floor()
自己,但是 Perlsgn()
作为内置程序的缺失每次都让我受益匪浅。由于 Perl 本质上是一种无类型脚本语言,因此可以使用字符串函数(如sprintf "%.f", $val
.