【问题标题】:Size function for ruby Fixnum classruby Fixnum 类的大小函数
【发布时间】:2016-12-06 16:15:57
【问题描述】:

为什么要像这样返回数字的 ruby​​ size 函数?

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

【问题讨论】:

  • 如果您能准确地指出您不了解size 方法文档的哪一部分,这将对Ruby 作者有很大帮助,以便他们改进供未来的读者阅读。

标签: ruby internals


【解决方案1】:

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

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

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

【讨论】:

  • 你能告诉我size函数做了什么动作吗?
  • @Vivakkumar 它基本上说明了用于存储数字的内存量(以字节为单位)。
  • 它是否返回按位内存表示?
  • @Vivakkumar,不,只需要存储多少字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多