我想知道Fixnum和Bignum的范围.在Float中,我可以使用Float :: MAX和Float :: MIN获得Float的范围.Fixnum和Bignum中没有类似的常量.实现这一目标的最佳方法是什么?
忘记Fixnum和Bignum.它们是私有的内部实现细节.他们是优化.你应该忽略它们.你应该关注的唯一课程是Integer.
在ISO的Ruby语言规范只规定Integer类.它允许特定于实现的子类,但它不指定它们.
Fixnums是一个优化,应该是实现的内部优化,永远不应该暴露给程序员.想想YARV中的flonum.您是否注意到在YARV 2.0中引入了flonum?他们所做的只是让自己Float更快.但你永远不会看到他们.这是应该的.
而事实上,YARV 2.4移除了Fixnum和Bignum,只会有IntegerS IN的未来.Fixnum并且由于向后兼容的原因,它会Bignum作为别名保留一段时间Integer,但是类本身将会消失.
在Ruby中,Integers没有最大值或最小值; 它们是任意大小的整数.因此,没有任何这样的常数.
Fixnums 的大小限制(如果它们一直存在)取决于平台和实现.在JRuby上,Fixnums总是64位,在YARV上,它们在64位平台上是63位,在32位平台上是31位.在蛋白石上,Integers被实现为ECMAScript Number(实际上是IEEE754浮点数,因此仅对53位精确),我认为它们甚至没有Fixnums或Bignums.
| 归档时间: |
|
| 查看次数: |
3134 次 |
| 最近记录: |