2016-12-06 45 views
1

为什么返回输出的数字的ruby尺寸函数是这样的?ruby​​的尺寸函数Fixnum类

1000000.size    # => 8 
99999999999999999999.size # => 9 
+0

如果您可以正确指出* size *方法文档的哪一部分不理解,那么这将对Ruby作者有极大的帮助,以便他们可以为未来的读者改进它。 –

回答

4

红宝石内部使用两种不同的结构,用于存储整数 - FixnumBignum。第一个用于较小的数字,并直接映射到主机体系结构上的长整数。它的尺寸更快且不变,但限制了其存储量。后者用于存储任意大的数字,其大小取决于数字的大小。

1000000.class    # => Fixnum 
99999999999999999999.class # => Bignum 

转换是在内部完成的。事实上,使用ruby 2.4.0,将只有一个类 - Integer

+0

你能告诉我大小函数做了什么动作吗? –

+0

@Vivakkumar它基本上说有多少内存(以字节为单位)用于存储数字。 – ndn

+0

它是否返回按位内存表示? –