# Some odd behaviors of BigDecimal

**URL:** <https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716>\
**Category:** Development\
**Created:** [September 4, 2008, 4:52pm UTC](https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716 "2008-09-04T16:52:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [September 4, 2008, 4:52pm UTC](https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716/1 "2008-09-04T16:52:55Z")

</div>

e$B1sF#$G$9!#e(B

BigDecimal  
e$B$N%F%9%H$r=q$$$F$$$F!"$$$/$D$+5$$K$J$k5sF0$,$"$j$^$7$?!#e(B

1. Infinity e$B$Ne(B n e$B\>h$,\>o$Ke(B NaN  
e$B$K$J$k$N$O0U?^E\*$G$7$g$&$+!#e(B

ruby19 -rbigdecimal -e ‘x = BigDecimal(“Infinity”); p [x **1, x** 0,  
x\*\*-1]’  
[#BigDecimal:8261238,‘NaN’,4(8), #BigDecimal:8261224,‘NaN’,4(8),  
#BigDecimal:8261210,‘NaN’,4(8)]

inf \*\* 0 e$B$,e(B NaN e$B$K$J$k$N$ODj5A\<!Bh$@$H;W$$$^$9$,!"e(B\*\* 1  
e$B$He(B \*\* -1 e$B$Oe(B  
e$B$=$l$\>$le(B inf e$B$He(B 0 e$B$r4|BT$7$F$$$^$7$?!#e(B  
Float e$B$@$H0J2\<$N$h$&$K$J$j$^$9e(B (e$B$&$A$N4D6-$N\>l9ge(B) e$B!#e(B

$ ruby19 -e ‘x = 1.0/0.0; p [x **1, x** 0, x\*\*-1]’  
[Infinity, 1.0, 0.0]

1. 1E1000…(0 e$B$,$$$C$Q$$e(B)…000 e$B$re(B BigDecimal  
e$B$KM?$($k$He(B 0 e$B$,JV$k$N$O0U?^E\*e(B  
e$B$G$7$g$&$+!#e(B

$ ruby19 -rbigdecimal -e ‘p BigDecimal(“1E1” + “0” \* 10000)’  
#BigDecimal:826133c,‘0.0’,4(8)

Float e$B$@$He(B Infinity e$B$K$J$j$^$9!#e(B

$ ruby19 -e ‘p (“1E1” + “0” \* 10000).to\_f’  
Infinity

1. limit(1) e$B$Ge(B 3 \*\* 4 e$B$r7W;;$9$k$He(B 90  
e$B$K$J$j$^$9$,0U?^E\*$G$7$g$&$+!#e(B

$ ruby19 -rbigdecimal -e ‘BigDecimal.limit(1); p BigDecimal(“3”) \*\* 4’  
#BigDecimal:8261300,‘0.9E2’,4(12)

e$B$A$c$s$HDI$C$F$J$$$G$9$,!“e(B3 \* 3 \* 3 \* 3 = 10 \* 3 \* 3 = 30 \* 3 = 90  
e$B$He(B  
e$B$J$C$F$$$k$N$+$J$”$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG\<F@$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [September 17, 2008, 11:42pm UTC](https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716/2 "2008-09-17T23:42:55Z")

</div>

e$B1sF#$G$9!#e(B

2008/09/04 23:46 Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B$=$l$\>$le(B inf e$B$He(B 0 e$B$r4|BT$7$F$$$^$7$?!#e(B  
> #BigDecimal:826133c,‘0.0’,4(8)  
> #BigDecimal:8261300,‘0.9E2’,4(12)
> 
> e$B$A$c$s$HDI$C$F$J$$$G$9$,!“e(B3 \* 3 \* 3 \* 3 = 10 \* 3 \* 3 = 30 \* 3 = 90 e$B$He(B  
> e$B$J$C$F$$$k$N$+$J$”$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG\<F@$7$^$9!#e(B

e$BJV;v$,$J$+$C$?$N$G!“$H$j$”$($:$9$Y$F0U?^E\*$H8+$J$7$?%F%9%H$re(B  
e$B%3%\_%C%H$7$^$7$?!#e(B(r19401)

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [September 18, 2008, 12:47am UTC](https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716/3 "2008-09-18T00:47:18Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:36358] Re: some odd behaviors of BigDecimal”  
on Thu, 18 Sep 2008 02:17:23 +0900, “Yusuke ENDOH” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|2008/09/04 23:46 Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):  
|\> BigDecimal e$B$N%F%9%H$r=q$$$F$$$F!“$$$/$D$+5$$K$J$k5sF0$,$”$j$^$7$?!#e(B  
|\>  
|\>  
|\> 1) Infinity e$B$Ne(B n e$B\>h$,\>o$Ke(B NaN e$B$K$J$k$N$O0U?^E\*$G$7$g$&$+!#e(B  
|\>  
|\> ruby19 -rbigdecimal -e ‘x = BigDecimal(“Infinity”); p [x **1, x** 0, x\*\*-1]’  
|\> [#BigDecimal:8261238,‘NaN’,4(8), #BigDecimal:8261224,‘NaN’,4(8),  
|\> #BigDecimal:8261210,‘NaN’,4(8)]  
|\>  
|\> inf \*\* 0 e$B$,e(B NaN e$B$K$J$k$N$ODj5A\<!Bh$@$H;W$$$^$9$,!“e(B\*\* 1 e$B$He(B \*\* -1 e$B$Oe(B  
|\> e$B$=$l$\>$le(B inf e$B$He(B 0 e$B$r4|BT$7$F$$$^$7$?!#e(B  
|\> Float e$B$@$H0J2\<$N$h$&$K$J$j$^$9e(B (e$B$&$A$N4D6-$N\>l9ge(B) e$B!#e(B  
|\>  
|\> $ ruby19 -e ‘x = 1.0/0.0; p [x **1, x** 0, x\*\*-1]’  
|\> [Infinity, 1.0, 0.0]  
|\>  
|\>  
|\> 2) 1E1000…(0 e$B$,$$$C$Q$$e(B)…000 e$B$re(B BigDecimal e$B$KM?$($k$He(B 0 e$B$,JV$k$N$O0U?^E_e(B  
|\> e$B$G$7$g$&$+!#e(B  
|\>  
|\> $ ruby19 -rbigdecimal -e ‘p BigDecimal(“1E1” + “0” \* 10000)’  
|\> #BigDecimal:826133c,‘0.0’,4(8)  
|\>  
|\> Float e$B$@$He(B Infinity e$B$K$J$j$^$9!#e(B  
|\>  
|\> $ ruby19 -e ‘p (“1E1” + “0” \* 10000).to\_f’  
|\> Infinity  
|\>  
|\>  
|\> 3) limit(1) e$B$Ge(B 3 \*\* 4 e$B$r7W;;$9$k$He(B 90 e$B$K$J$j$^$9$,0U?^E_$G$7$g$&$+!#e(B  
|\>  
|\> $ ruby19 -rbigdecimal -e ‘BigDecimal.limit(1); p BigDecimal(“3”) \*\* 4’  
|\> #BigDecimal:8261300,‘0.9E2’,4(12)  
|\>  
|\> e$B$A$c$s$HDI$C$F$J$$$G$9$,!“e(B3 \* 3 \* 3 \* 3 = 10 \* 3 \* 3 = 30 \* 3 = 90 e$B$He(B  
|\> e$B$J$C$F$$$k$N$+$J$”$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG\<F@$7$^$9!#e(B  
|  
|e$BJV;v$,$J$+$C$?$N$G!”$H$j$"$($:$9$Y$F0U?^E\*$H8+$J$7$?%F%9%H$re(B  
|e$B%3%\_%C%H$7$^$7$?!#e(B(r19401)

e$B$9$\_$^$;$s!#:G6a!"e(BBigDecimale$B$,J|CV5$L#$G$9$M!#e(B

e$B8D?ME\*$J0U8+$r=R$Y$k$H!"e(B3)e$B$K$D$$$F$O$I$&$7$?$b$s$@$+J,$+$j$^e(B  
e$B$;$s$,!"e(B1)e$B$He(B2)e$B$K$D$$$F$Oe(BFloate$B$K9g$o$;$?J}$,$h$$$H;W$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [September 18, 2008, 3:52pm UTC](https://www.ruby-forum.com/t/some-odd-behaviors-of-bigdecimal/147716/4 "2008-09-18T15:52:25Z")

</div>

e$B1sF#$G$9!#e(B

2008/09/18 7:39 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> |\> $ ruby19 -e ‘x = 1.0/0.0; p [x **1, x** 0, x\*\*-1]’  
> |\>  
> |\> e$B$J$C$F$$$k$N$+$J$“$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG\<F@$7$^$9!#e(B  
> |  
> |e$BJV;v$,$J$+$C$?$N$G!”$H$j$"$($:$9$Y$F0U?^E\*$H8+$J$7$?%F%9%H$re(B  
> |e$B%3%\_%C%H$7$^$7$?!#e(B(r19401)
> 
> e$B$9$\_$^$;$s!#:G6a!"e(BBigDecimale$B$,J|CV5$L#$G$9$M!#e(B
> 
> e$B8D?ME\*$J0U8+$r=R$Y$k$H!"e(B3)e$B$K$D$$$F$O$I$&$7$?$b$s$@$+J,$+$j$^e(B  
> e$B$;$s$,!"e(B1)e$B$He(B2)e$B$K$D$$$F$Oe(BFloate$B$K9g$o$;$?J}$,$h$$$H;W$$$^$9!#e(B

e$B;d$b$=$&;W$$$^$9!#$=$N$h$&$K$7$F%3%\_%C%H$7$^$7$?!#e(B

$ ./ruby -rbigdecimal -e ‘(-2…2).each {|n| p (BigDecimal(“-Infinity”)  
\*\* n).to\_f }’  
0.0  
-0.0  
1.0  
-Infinity  
Infinity

$ ./ruby -rbigdecimal -e ‘%w(1E1 -1E1 1E-1 -1E-1).each {|s| p  
BigDecimal(s + “0” \* 10000).to\_f }’  
Infinity  
-Infinity  
0.0  
-0.0
