ruby Fixnum class 的大小函数

Size function for ruby Fixnum class

为什么 ruby 数字返回输出的大小函数是这样的?

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

Ruby 在内部使用两种不同的结构来存储整数 - FixnumBignum。第一个用于较小的数字并直接映射到主机体系结构上的长整数。它速度更快且大小恒定,但受存储量的限制。后者用于存储任意大的数字,其大小取决于数字的大小。

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

转换是在内部完成的。事实上 ruby 2.4.0,只有一个 class - Integer.