$B1sF#$G$9!#(B
BigDecimal
$B$N%F%9%H$r=q$$$F$$$F!"$$$/$D$+5$$K$J$k5sF0$,$"$j$^$7$?!#(B
1) Infinity $B$N(B n $B>h$,>o$K(B NaN
$B$K$J$k$N$O0U?^E*$G$7$g$&$+!#(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 $B$,(B NaN $B$K$J$k$N$ODj5A<!Bh$@$H;W$$$^$9$,!"(B** 1
$B$H(B ** -1 $B$O(B
$B$=$l$>$l(B inf $B$H(B 0 $B$r4|BT$7$F$$$^$7$?!#(B
Float $B$@$H0J2<$N$h$&$K$J$j$^$9(B ($B$&$A$N4D6-$N>l9g(B) $B!#(B
$ ruby19 -e 'x = 1.0/0.0; p [x**1, x**0, x**-1]'
[Infinity, 1.0, 0.0]
2) 1E1000..(0 $B$,$$$C$Q$$(B)..000 $B$r(B BigDecimal
$B$KM?$($k$H(B 0 $B$,JV$k$N$O0U?^E*(B
$B$G$7$g$&$+!#(B
$ ruby19 -rbigdecimal -e 'p BigDecimal("1E1" + "0" * 10000)'
#<BigDecimal:826133c,'0.0',4(8)>
Float $B$@$H(B Infinity $B$K$J$j$^$9!#(B
$ ruby19 -e 'p ("1E1" + "0" * 10000).to_f'
Infinity
3) limit(1) $B$G(B 3 ** 4 $B$r7W;;$9$k$H(B 90
$B$K$J$j$^$9$,0U?^E*$G$7$g$&$+!#(B
$ ruby19 -rbigdecimal -e 'BigDecimal.limit(1); p BigDecimal("3") ** 4'
#<BigDecimal:8261300,'0.9E2',4(12)>
$B$A$c$s$HDI$C$F$J$$$G$9$,!"(B3 * 3 * 3 * 3 = 10 * 3 * 3 = 30 * 3 = 90
$B$H(B
$B$J$C$F$$$k$N$+$J$"$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG<F@$7$^$9!#(B
on 04.09.2008 16:52
on 17.09.2008 23:42
$B1sF#$G$9!#(B 2008/09/04 23:46 Yusuke ENDOH <mame@tsg.ne.jp>: > $B$=$l$>$l(B inf $B$H(B 0 $B$r4|BT$7$F$$$^$7$?!#(B > #<BigDecimal:826133c,'0.0',4(8)> > #<BigDecimal:8261300,'0.9E2',4(12)> > > $B$A$c$s$HDI$C$F$J$$$G$9$,!"(B3 * 3 * 3 * 3 = 10 * 3 * 3 = 30 * 3 = 90 $B$H(B > $B$J$C$F$$$k$N$+$J$"$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG<F@$7$^$9!#(B $BJV;v$,$J$+$C$?$N$G!"$H$j$"$($:$9$Y$F0U?^E*$H8+$J$7$?%F%9%H$r(B $B%3%_%C%H$7$^$7$?!#(B(r19401)
on 18.09.2008 00:47
$B$^$D$b$H(B $B$f$-$R$m$G$9(B
In message "Re: [ruby-dev:36358] Re: some odd behaviors of BigDecimal"
on Thu, 18 Sep 2008 02:17:23 +0900, "Yusuke ENDOH" <mame@tsg.ne.jp>
writes:
|2008/09/04 23:46 Yusuke ENDOH <mame@tsg.ne.jp>:
|> BigDecimal $B$N%F%9%H$r=q$$$F$$$F!"$$$/$D$+5$$K$J$k5sF0$,$"$j$^$7$?!#(B
|>
|>
|> 1) Infinity $B$N(B n $B>h$,>o$K(B NaN $B$K$J$k$N$O0U?^E*$G$7$g$&$+!#(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 $B$,(B NaN $B$K$J$k$N$ODj5A<!Bh$@$H;W$$$^$9$,!"(B** 1 $B$H(B ** -1 $B$O(B
|> $B$=$l$>$l(B inf $B$H(B 0 $B$r4|BT$7$F$$$^$7$?!#(B
|> Float $B$@$H0J2<$N$h$&$K$J$j$^$9(B ($B$&$A$N4D6-$N>l9g(B) $B!#(B
|>
|> $ ruby19 -e 'x = 1.0/0.0; p [x**1, x**0, x**-1]'
|> [Infinity, 1.0, 0.0]
|>
|>
|> 2) 1E1000..(0 $B$,$$$C$Q$$(B)..000 $B$r(B BigDecimal $B$KM?$($k$H(B 0 $B$,JV$k$N$O0U?^E*(B
|> $B$G$7$g$&$+!#(B
|>
|> $ ruby19 -rbigdecimal -e 'p BigDecimal("1E1" + "0" * 10000)'
|> #<BigDecimal:826133c,'0.0',4(8)>
|>
|> Float $B$@$H(B Infinity $B$K$J$j$^$9!#(B
|>
|> $ ruby19 -e 'p ("1E1" + "0" * 10000).to_f'
|> Infinity
|>
|>
|> 3) limit(1) $B$G(B 3 ** 4 $B$r7W;;$9$k$H(B 90 $B$K$J$j$^$9$,0U?^E*$G$7$g$&$+!#(B
|>
|> $ ruby19 -rbigdecimal -e 'BigDecimal.limit(1); p BigDecimal("3") ** 4'
|> #<BigDecimal:8261300,'0.9E2',4(12)>
|>
|> $B$A$c$s$HDI$C$F$J$$$G$9$,!"(B3 * 3 * 3 * 3 = 10 * 3 * 3 = 30 * 3 = 90 $B$H(B
|> $B$J$C$F$$$k$N$+$J$"$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG<F@$7$^$9!#(B
|
|$BJV;v$,$J$+$C$?$N$G!"$H$j$"$($:$9$Y$F0U?^E*$H8+$J$7$?%F%9%H$r(B
|$B%3%_%C%H$7$^$7$?!#(B(r19401)
$B$9$_$^$;$s!#:G6a!"(BBigDecimal$B$,J|CV5$L#$G$9$M!#(B
$B8D?ME*$J0U8+$r=R$Y$k$H!"(B3)$B$K$D$$$F$O$I$&$7$?$b$s$@$+J,$+$j$^(B
$B$;$s$,!"(B1)$B$H(B2)$B$K$D$$$F$O(BFloat$B$K9g$o$;$?J}$,$h$$$H;W$$$^$9!#(B
on 18.09.2008 15:52
$B1sF#$G$9!#(B 2008/09/18 7:39 Yukihiro Matsumoto <matz@ruby-lang.org>: > |> $ ruby19 -e 'x = 1.0/0.0; p [x**1, x**0, x**-1]' > |> > |> $B$J$C$F$$$k$N$+$J$"$H;W$$$^$9!#;EMM$@$H8@$o$l$l$PG<F@$7$^$9!#(B > | > |$BJV;v$,$J$+$C$?$N$G!"$H$j$"$($:$9$Y$F0U?^E*$H8+$J$7$?%F%9%H$r(B > |$B%3%_%C%H$7$^$7$?!#(B(r19401) > > $B$9$_$^$;$s!#:G6a!"(BBigDecimal$B$,J|CV5$L#$G$9$M!#(B > > $B8D?ME*$J0U8+$r=R$Y$k$H!"(B3)$B$K$D$$$F$O$I$&$7$?$b$s$@$+J,$+$j$^(B > $B$;$s$,!"(B1)$B$H(B2)$B$K$D$$$F$O(BFloat$B$K9g$o$;$?J}$,$h$$$H;W$$$^$9!#(B $B;d$b$=$&;W$$$^$9!#$=$N$h$&$K$7$F%3%_%C%H$7$^$7$?!#(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