Project

General

Profile

Actions

Bug #8401

closed

BigDecimal.new("2").power(1e20) is zero.

Added by akr (Akira Tanaka) almost 11 years ago. Updated over 10 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-05-13 trunk 40697) [x86_64-linux]
[ruby-dev:47340]

Description

ふと見つけたのですが、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 `'

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0