LoginSignup
2
2

More than 5 years have passed since last update.

[ruby]ruby2.4のEnumerable#sum

Posted at

Enumerable#sum

ruby 2.4で入るらしいEnumerable#sumですが、最初見たときは「あぁ、そういうのも追加されるのか」というぐらいだったのですが、

で、

特定の場合(浮動小数点数の配列とか)には誤差が累積しないアルゴリズムが採用されています

と紹介されていたので、「お?」と思って試してみました。

まず普通に足し算

% ruby -ve 'p ([0.1] * 10).inject(:+)'
ruby 2.4.0preview2 (2016-09-09 trunk 56129) [x86_64-darwin15]
0.9999999999999999

浮動小数点での誤差が正しく(?)でてますね。

次にsumで足し算

% ruby -ve 'p ([0.1] * 10).sum'
ruby 2.4.0preview2 (2016-09-09 trunk 56129) [x86_64-darwin15]
1.0

おお! ・・・と思ったら、

によると、

% ruby -ve 'p ([0.1] * 3).sum'
ruby 2.4.0preview2 (2016-09-09 trunk 56129) [x86_64-darwin15]
0.30000000000000004

というケースもあるんですね。

2
2
0

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
2