回答編集履歴

4

間違っていたのを修正。manmanさんに感謝。

2015/07/26 00:06

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,6 +1,6 @@
1
1
  jの上限はメモリが許す限りです。
2
2
 
3
- ```
3
+ ```Ruby
4
4
 
5
5
  require 'bigdecimal'
6
6
 
@@ -14,10 +14,38 @@
14
14
 
15
15
  puts dec_sum(7, 3, 8) # => 0.1428571428..のうち285714を全部足して27
16
16
 
17
- puts dec_sum(97,2,96) #=> 431
17
+ puts dec_sum(97,2,96) #=> 431 ← これ、間違いです!
18
18
 
19
19
  ```
20
20
 
21
21
  (修正)有効桁数は1つ多めにしないと四捨五入されちゃうときがある。
22
22
 
23
23
  参考: [Ruby docs: library bigdecimal](http://docs.ruby-lang.org/ja/2.2.0/library/bigdecimal.html)
24
+
25
+
26
+
27
+ (追記) 間違っていました><
28
+
29
+ 上のコードではE-nを考慮してなかったです。
30
+
31
+ E-n部分はmanmanさんの回答を参照して下さい。
32
+
33
+ で、BigDecimal#to_sに"F"渡すとEじゃなくなるので、それでの回答を
34
+
35
+ ```Ruby
36
+
37
+ require 'bigdecimal'
38
+
39
+ def dec_sum(n, i, j)
40
+
41
+ BigDecimal(1r/n, j+1).to_s("F")[i+1..j+1].each_char.map(&:to_i).reduce(&:+)
42
+
43
+ end
44
+
45
+ # 使い方
46
+
47
+ puts dec_sum(7, 3, 8) # => 0.1428571428..のうち285714を全部足して27
48
+
49
+ puts dec_sum(97,2,96) #=> 432
50
+
51
+ ```

3

改行

2015/07/26 00:05

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -18,4 +18,6 @@
18
18
 
19
19
  ```
20
20
 
21
+ (修正)有効桁数は1つ多めにしないと四捨五入されちゃうときがある。
22
+
21
- (修正)有効桁数は1つ多めにしないと四捨五入されちゃうときがある。参考: [Ruby docs: library bigdecimal](http://docs.ruby-lang.org/ja/2.2.0/library/bigdecimal.html)
23
+ 参考: [Ruby docs: library bigdecimal](http://docs.ruby-lang.org/ja/2.2.0/library/bigdecimal.html)

2

修正部分の説明を正確に表記

2015/07/25 14:28

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -18,4 +18,4 @@
18
18
 
19
19
  ```
20
20
 
21
- (修正)有効桁数は1つ多めにしないと四捨五入されちゃうっぽい
21
+ (修正)有効桁数は1つ多めにしないと四捨五入されちゃうときがある。参考: [Ruby docs: library bigdecimal](http://docs.ruby-lang.org/ja/2.2.0/library/bigdecimal.html)

1

有効桁数は一つ多めにしないと

2015/07/25 14:28

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -6,12 +6,16 @@
6
6
 
7
7
  def dec_sum(n, i, j)
8
8
 
9
- BigDecimal(1r/n, j).to_s[i+1..j+1].each_char.map(&:to_i).reduce(&:+)
9
+ BigDecimal(1r/n, j+1).to_s[i+1..j+1].each_char.map(&:to_i).reduce(&:+)
10
10
 
11
11
  end
12
12
 
13
13
  # 使い方
14
14
 
15
- puts dec_sum(7, 3, 8) # => 0.1428571429..のうち285714を全部足して27
15
+ puts dec_sum(7, 3, 8) # => 0.1428571428..のうち285714を全部足して27
16
+
17
+ puts dec_sum(97,2,96) #=> 431
16
18
 
17
19
  ```
20
+
21
+ (修正)有効桁数は1つ多めにしないと四捨五入されちゃうっぽい