我正在使用算法的无穷大初始化列表。写$x = 9**9**9
感觉不直观,而且,我可能希望将来使用BigInt。 1/0
会抛出错误。
获取inf
的规范方法是什么?
答案 0 :(得分:17)
您可以使用特殊字符串"inf"
:
perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0
等等。
其他特殊字符串包括+inf
,-inf
,nan
。当然,这也适用于bignum
或bigint
pragma。但是,这些编译指示导出等效函数inf
和NaN
,以便您可以使用裸字。
正如@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;
已经存在了很长时间,所以它应该非常便携。