Perl中有inf常量吗?

8fq7wneg  于 6个月前  发布在  Perl
关注(0)|答案(2)|浏览(94)

我正在为一个算法初始化一个无穷大的列表。写$x = 9**9**9感觉不直观,而且,我可能想在将来使用BigInt。1/0抛出一个错误。
得到inf的规范方法是什么?

nue99wik

nue99wik1#

可以使用特殊字符串"inf"

perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0

字符串
等等。;
其他特殊字符串包括+inf-infnan。当然,这也适用于bignumbigint编译指示。但是,这些编译指示导出等效的函数infNaN,以便您可以使用空字。

编辑

正如@ikegami所指出的,似乎没有一种“可移植的”方式可以在没有模块的情况下实现真正的无穷大。我刚刚浏览了interesting perlmonks thread,但它并没有减少混乱。也许最好的解决方案是从一开始就接受性能损失和use big{num,int,rat},但在不需要它们的范围内使用no big{num,int,rat}

7vhp5slm

7vhp5slm2#

我使用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;已经存在很长时间了,所以它应该是非常便携的。

相关问题