回答編集履歴

2

別解追記

2015/07/25 23:50

投稿

otn
otn

スコア84423

test CHANGED
@@ -19,3 +19,25 @@
19
19
 
20
20
 
21
21
  `BigDecimal`ライブラリを使うと、任意精度(jの上限無し)にも出来ます。
22
+
23
+
24
+
25
+ 追記:
26
+
27
+ `BigDecimal`版です。`j+1`のところは`j`でも良いかもしれないけど考えてません。
28
+
29
+ ```Ruby
30
+
31
+ require "bigdecimal"
32
+
33
+
34
+
35
+ def foo(n,i,j)
36
+
37
+ fraction = BigDecimal(1).div(BigDecimal(n),j+1).to_s("f")[1..-1]
38
+
39
+ fraction[i..j].split(//).inject(0){|sum,x| sum+=x.to_i}
40
+
41
+ end
42
+
43
+ ```

1

誤りの修正

2015/07/25 23:50

投稿

otn
otn

スコア84423

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  def foo(n,i,j)
10
10
 
11
- fraction = (1.0/n).to_s[1..-1]
11
+ fraction = sprintf("%.#{j+1}f",1.0/n)[1..-1]
12
12
 
13
13
  fraction[i..j].split(//).inject(0){|sum,x| sum+=x.to_i}
14
14