我正在为算法初始化一个无穷大的列表。写作$x = 9**9**9
感觉不直观,而且,我将来可能想使用 BigInt。1/0
引发错误。
获得的规范方法是什么inf
?
您可以使用特殊字符串"inf"
:
perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0
等等。
其他特殊字符串包括+inf
, -inf
, nan
. 当然,这也适用于bignum
or bigint
pragma。但是,这些 pragma 导出等效函数inf
,NaN
因此您可以使用裸字。
正如@ikegami 指出的那样,似乎没有一种可移植的方式来实现没有模块的真正无穷大。我刚刚浏览了这个有趣的 perlmonks 线程,但它并没有变得不那么令人困惑。也许最好的解决方案是从一开始就接受性能损失use big{num,int,rat}
,但no big{num,int,rat}
在不需要它们的范围内使用。
我用bigrat来做到这一点。很难说-E 启用了哪些功能。
use bigrat;
use feature qw(say);
say inf + inf;
say 9**99 / -inf(); #Perl doesn't always like "-inf" by itself
use bigrat;
已经存在很长时间了,所以它应该非常便携。