首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby最大整数

Ruby最大整数
EN

Stack Overflow用户
提问于 2009-02-11 07:03:51
回答 5查看 110.3K关注 0票数 93

我需要能够在Ruby中确定系统的最大整数。有人知道是怎么回事吗,或者有没有可能?

EN

回答 5

Stack Overflow用户

发布于 2009-04-10 00:12:26

代码语言:javascript
复制
FIXNUM_MAX = (2**(0.size * 8 -2) -1)
FIXNUM_MIN = -(2**(0.size * 8 -2))
票数 81
EN

Stack Overflow用户

发布于 2009-02-11 23:59:48

阅读友好手册?谁会想这么做呢?

代码语言:javascript
复制
start = Time.now
largest_known_fixnum = 1
smallest_known_bignum = nil

until smallest_known_bignum == largest_known_fixnum + 1
  if smallest_known_bignum.nil?
    next_number_to_try = largest_known_fixnum * 1000
  else
    next_number_to_try = (smallest_known_bignum + largest_known_fixnum) / 2 # Geometric mean would be more efficient, but more risky
  end

  if next_number_to_try <= largest_known_fixnum ||
       smallest_known_bignum && next_number_to_try >= smallest_known_bignum
    raise "Can't happen case" 
  end

  case next_number_to_try
    when Bignum then smallest_known_bignum = next_number_to_try
    when Fixnum then largest_known_fixnum = next_number_to_try
    else raise "Can't happen case"
  end
end

finish = Time.now
puts "The largest fixnum is #{largest_known_fixnum}"
puts "The smallest bignum is #{smallest_known_bignum}"
puts "Calculation took #{finish - start} seconds"
票数 13
EN

Stack Overflow用户

发布于 2009-02-11 07:18:10

在拼音中,Fixnums会自动转换为Bignums。

要找到尽可能高的Fixnum,您可以这样做:

代码语言:javascript
复制
class Fixnum
 N_BYTES = [42].pack('i').size
 N_BITS = N_BYTES * 8
 MAX = 2 ** (N_BITS - 2) - 1
 MIN = -MAX - 1
end
p(Fixnum::MAX)

厚颜无耻地从ruby-talk discussion上扯下来。请查看此处了解更多详细信息。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/535721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档