Ruby 2.2.1 を使っているのですが、
n = 1, 2, … , のとき
Math.sqrt(n).to_i が正しい値をかえす
(すなわち、1 からn までの全てのm に対して、Math.sqrt(m).to_i の値が [√m] となる)
のはn がどれくらいまででしょうか?

ちなみに
n = 4503599761588224 のとき、
Math.sqrt(n).to_i が正しい値をかえさないことを
次のコードを実行して見つけました。

require 'bigdecimal/math'
include BigMath

67000000.upto(68000000){|i|
  n = i * i - 1
  if !((BigDecimal.new(n.to_s).sqrt(10)).to_i == Math.sqrt(n).to_i)
    p [n, i, (BigDecimal.new(n.to_s).sqrt(10)).to_i, Math.sqrt(n).to_i]
    break
  end
}

(追記)
n = i * i - 1型を全て調べるなら、次のコードの方がよい。

i = 2
num = Math.sqrt(i * i - 1).to_i
while num == i - 1
  i += 1
  num = Math.sqrt(i * i - 1).to_i
end
p [i * i - 1, i]

出力結果
[4503599761588224, 67108865]