Perl中有一个inf常量吗?

And*_*eas 18 perl infinity

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

什么是规范的方式inf

amo*_*mon 18

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

perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0
Run Code Online (Sandbox Code Playgroud)

等等.

其他特殊字符串包括+inf,-inf,nan.当然这也适用于bignum或者bigintpragma.但是,这些编译指示导出等效函数inf,NaN因此您可以使用裸字.

编辑

正如@ikegami指出的那样,没有模块似乎没有一种可移植的方式来实现真正的无穷大.我只是通过这个有趣的perlmonks线程,但它并没有减少混乱.也许最好的解决方案是use big{num,int,rat}从一开始就接受性能损失,但是no big{num,int,rat}在不需要它们的范围内使用.

  • 这不便携.对我来说,"1"和"非法划分为零".它取决于底层的C库 (4认同)