LoginSignup
2
0

More than 3 years have passed since last update.

[ruby]Rubyの分数の計算

Last updated at Posted at 2020-04-23

1.何があってこの記事を書いたか

下記のコードを書いたら無限ループしてしまい理由が意外だったからです

n = 0
i = 0
while  i < 8
  n += 1
  i = i + (1/n)
  puts "#{n}"
end

2.無限ループ回避

どうやら(1/n)と書くと1かnが文字として認識されるらしく計算が永遠に終わりませんでした。
→2020/4/24にご指摘をいただき、文字ではなく、(分数が正の値の場合)切り捨てとして扱われることが判明しました。また負の値の場合は取り扱いが変わるそうなので注意が必要となります。

そこで分数の表示をRational(1, n)と書くことで正常に動きました。
下記が正しいコードです。

n = 0
i = 0
while  i < 8
  n += 1
  i = i + Rational(1, n)
  puts "#{n}"
end

2
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0