我正在为算法初始化一个无穷大的列表。编写$x = 9**9**9感觉很不直观,而且我可能会在将来使用BigInt。1/0抛出一个错误。
获得inf的标准方法是什么?
发布于 2012-11-30 12:29:00
可以使用特殊的字符串"inf"。
perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0等等。
其他特殊字符串包括+inf、-inf、nan。当然,这也适用于bignum或bigint语用。然而,这些语用输出等价的函数inf和NaN,以便您可以使用赤字。
编辑
正如@ikegami所指出的,在没有模块的情况下,似乎没有一种可移植的方法来实现真正的无限。我刚刚浏览了一下这个有趣的僧侣线,但是它并没有变得不那么让人困惑。也许最好的解决方案是从一开始就接受性能损失和use big{num,int,rat},但是在不需要的范围内使用no big{num,int,rat}。
发布于 2012-11-30 14:25:05
我用过比格拉特来做这个。很难说-E启用了什么功能。
use bigrat;
use feature qw(say);
say inf + inf;
say 9**99 / -inf(); #Perl doesn't always like "-inf" by itselfuse bigrat;已经存在很长一段时间了,所以它应该是可移植的。
https://stackoverflow.com/questions/13645034
复制相似问题