Perl中有一个inf常量吗?

时间:2012-11-30 12:13:11

标签: perl infinity

我正在使用算法的无穷大初始化列表。写$x = 9**9**9感觉不直观,而且,我可能希望将来使用BigInt。 1/0会抛出错误。

获取inf的规范方法是什么?

2 个答案:

答案 0 :(得分:17)

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

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

等等。

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

修改

正如@ikegami指出的那样,似乎没有一种便携式方式来实现没有模块的真正无穷大。我只是浏览了这个interesting perlmonks thread,但它并没有让人感到困惑。也许最好的解决方案是从一开始就接受性能损失use big{num,int,rat},但在不需要它们的范围内使用no big{num,int,rat}

答案 1 :(得分:3)

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