From: "akr (Akira Tanaka)" Date: 2013-05-14T00:14:46+09:00 Subject: [ruby-dev:47340] [ruby-trunk - Bug #8401][Open] BigDecimal.new("2").power(1e20) is zero. Issue #8401 has been reported by akr (Akira Tanaka). ---------------------------------------- Bug #8401: BigDecimal.new("2").power(1e20) is zero. https://bugs.ruby-lang.org/issues/8401 Author: akr (Akira Tanaka) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.1.0dev (2013-05-13 trunk 40697) [x86_64-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN ふと見つけたのですが、BigDecimal.new("2").power(1e20) が 0.0 になります。 % ./ruby -v -rbigdecimal -e 'puts BigDecimal.new("2").power(1e20)' ruby 2.1.0dev (2013-05-13 trunk 40697) [x86_64-linux] 0.0 以下のように、power の引数が 1e1 や 1e2 なら値が出てきて、 1e10 ならエラーになるのに、 1e20 になるとまたエラーじゃなくなって 0.0 になっちゃうのは 変ではないでしょうか。 % ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e1)' 0.1024E4 % ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e2)' 0.1267650600228229401496703205376E31 % ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e10)' -e:1:in `power': integer 10000000000 too big to convert to `int' (RangeError) from -e:1:in `
' -- http://bugs.ruby-lang.org/