計算精度があたるってなんじゃらほ
とりあえず、途中で min と max がただの整数になってる
Ruby の変数は箱ではなく、オブジェクトに貼られたラベルだ
BigDecimal オブジェクトに max という変数名をつけたからといって、max という変数名が常に BigDecimal になるわけじゃない

if m * m * m >= n
max = BigDecimal::new(m.to_s)
end

min = max - BigDecimal::new('1.0')

mid = (min + max) / BigDecimal::new('2.0')

とか書いたら

15 # input
0.25E1
0.225E1
0.2375E1
0.24375E1
0.246875E1
0.2453125E1
0.24609375E1
0.246484375E1
0.2466796875E1
0.24658203125E1

という表示になったけどこれでいっすか