在我的一个模块中,我必须处理无限的概念。迄今为止,我一直在使用9**9**9
作为正无穷,并且这似乎运行良好,速度很快,并且似乎是perl内部使用的无穷大。在Perl模块中检查无穷大的最佳方法是什么?
然而,事情变得有点冒险,如果我的模块的用户决定使用大数模块之一(如use bigint;
),然后他们使用inf
或Math::BigInt->binf()
表示无穷。
在一些地方,它似乎工作正常,但在其他地方,应该是真实的或应该是错误的比较最终会导致错误追踪错误。
我想支持各种其他的无限概念,用普通perl数字和任意精度数字都可以工作。
但我也担心表现,因为我的一些比较无限发生在紧密的内部循环中。显然inf
从Math::BigInt
将会比9**9**9
慢(由于每个访问调用绑定或重载方法)。有没有人在过去处理过这个问题?如果是这样,你的解决方案是什么?
我想过用自己的常数无穷,定义是这样的:
,然后加入告诫我的模块,任何BIGNUM模块应先送入。这听起来合理吗?在那里有可靠的if_any_bignum...
实施吗,还是我应该推出自己的?
可能的重复[如何在Perl中创建或测试NaN或无穷大?](http://stackoverflow.com/questions/1185822/how-do-i-create-or-test-for-nan- or-infinity-in-perl) – Ether 2010-10-04 16:20:21
@其他=>请在投票结束前阅读问题,否则这个问题的答案都不会涵盖这个问题...... – 2010-10-04 16:25:41
好吧,那不是很清楚,因为问题是相同的。 – Ether 2010-10-04 16:29:39