1 <!-- saved from url=(0022)http://internet.e-mail -->
4 <META HTTP-EQUIV=
"Content-Type" CONTENT=
"text/html; charset=Shift_JIS">
5 <style type=
"text/css"><!--
6 body
{ color: #3f0f0f; background: #fefeff; margin-left: 2em; margin-right: 2em;}
7 h1
{ color: #ffffff; background-color: #3939AD; border-color: #FF00FF; width: 100%;
8 border-style: solid
; border-top-width: 0.1em; border-bottom-width: 0.1em; border-right: none
;
9 border-left: none
; padding: 0.1em; font-weight: bold
; font-size: 160%; text-align: center
;
11 h2
{ color: #00007f; background-color: #e7e7ff; border-color: #000094; width: 100%;
12 border-style: solid
; border-left: none
; border-right: none
; border-top-width: 0.1em; border-bottom-width: 0.1em;
14 font-weight: bold
; font-size: 110%;
16 h3
{ color: #00007f; padding: 0.2em; font-size: 110%;}
17 h4
, h5
{ color: #000000; padding: 0.2em; font-size: 100%;}
18 table
{ margin-top: 0.2em; margin-bottom: 0.2em; margin-left: 2em; margin-right: 2em;}
19 caption
{ color: #7f0000; font-weight: bold
;}
20 th
{ background: #e7e7ff; padding-left: 0.2em; padding-right: 0.2em;}
21 td
{ background: #f3f7ff; padding-left: 0.2em; padding-right: 0.2em;}
22 code
{ color: #0000df;}
23 dt
{ margin-top: 0.2em;}
24 li
{ margin-top: 0.2em;}
26 { BACKGROUND-COLOR: #d0d0d0; BORDER-BOTTOM: medium none
; BORDER-LEFT: medium none
;
27 BORDER-RIGHT: medium none
; BORDER-TOP: medium none
; LINE-HEIGHT: 100%; MARGIN: 12px 12px 12px 12px;
28 PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px;
29 WHITE-SPACE: pre
; WIDTH: 100%
33 <TITLE>BigDecimal:An extension library for Ruby
</TITLE>
35 <BODY BGCOLOR=#FFFFE0
>
36 <H1>BigDecimal(‰Â•Ï’·•‚“®��”“_‰‰ŽZ—pŠg’£ƒ‰ƒCƒuƒ‰ƒŠ)
</H1>
37 <DIV align=
"right"><A HREF=
"./bigdecimal_en.html">English
</A></DIV><BR>
38 BigDecimal ‚̓IƒuƒWƒFƒNƒgŽwŒü‚Ì‹—͂ȃXƒNƒŠƒvƒgŒ¾Œê‚Å‚ ‚é Ruby ‚ɉ•ϒ·•‚“®�¬�”“_
39 ŒvŽZ‹@”\‚ð’ljÁ‚·‚邽‚ß‚ÌŠg’£ƒ‰ƒCƒuƒ‰ƒŠ‚Å‚·�B
40 Ruby ‚ɂ‚¢‚Ä‚Ì�Ú‚µ‚¢“à—e‚͈ȉº‚ÌURL‚ðŽQ�Æ‚µ‚Ä‚‚¾‚³‚¢�B
42 <LI><A HREF=
"http://www.ruby-lang.org/ja/">http://www.ruby-lang.org/ja/
</A>�FRubyŒöŽ®ƒy�[ƒW
</LI>
43 <LI><A HREF=
"http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/
</A>�FRuby‚ÉŠÖ‚·‚éƒy�[ƒW‚ð’H‚ê‚Ü‚·
</LI>
48 <LI><A HREF=
"#INTRO">‚Í‚¶‚ß‚É
</LI>
49 <LI><A HREF=
"#SPEC">Žg—p•û–@‚ƃ�ƒ\ƒbƒh‚̈ꗗ
</A></LI>
50 <LI><A HREF=
"#UNDEF">–³ŒÀ�A”ñ�”�Aƒ[ƒ�‚̈µ‚¢
</A></LI>
51 <LI><A HREF=
"#STRUCT">“à•”�\‘¢
</A></LI>
52 <LI><A HREF=
"#BASE">2�i‚Æ
10�i
</A></LI>
53 <LI><A HREF=
"#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</A></LI>
59 Ruby ‚É‚Í Bignum ‚Æ‚¢‚¤ƒNƒ‰ƒX‚ª‚ ‚è�A�”•SŒ…‚Ì�®�”‚Å‚àŒvŽZ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
60 ‚½‚¾�A”CˆÓŒ…‚Ì•‚“®��”“_‰‰ŽZ—pƒNƒ‰ƒX‚ª–³‚¢‚悤‚Å‚·�B‚»‚±‚Å�A
61 ”CˆÓŒ…‚Ì•‚“®��”“_‰‰ŽZ—pŠg’£ƒ‰ƒCƒuƒ‰ƒŠ BigDecimal ‚ð�ì�¬‚µ‚Ü‚µ‚½�B
62 •s‹ï�‡‚â�•Œ¾�E’ñˆÄ‚ª‚ ‚é�ê�‡‚Ç‚µ‚Ç‚µ�A
63 <A HREF=
"mailto:shigeo@tinyforest.gr.jp">shigeo@tinyforest.gr.jp
</A>
64 ‚Ü‚Å‚¨’m‚点‚‚¾‚³‚¢�B•s‹ï�‡‚𒼂·‹C‚Í‘å‚¢‚É‚ ‚è‚Ü‚·�B‚½‚¾�AŽžŠÔ‚È‚Ç‚ÌŠÖŒW‚Å–ñ‘©
65 ‚Í‚Å‚«‚Ü‚¹‚ñ�B‚Ü‚½�AŒ‹‰Ê‚ɂ‚¢‚Ä‚à•Û�Ø‚Å‚«‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñ�B
66 —\‚ß�A‚²—¹�³‚‚¾‚³‚¢�B
68 ‚±‚̃vƒ�ƒOƒ‰ƒ€‚Í�AŽ©—R‚É”z•z�E‰ü•Ï‚µ‚Ä�\‚¢‚Ü‚¹‚ñ�B‚½‚¾‚µ�A’˜�ìŒ ‚Í•úŠü‚µ‚Ä‚¢‚Ü‚¹‚ñ�B
69 ”z•z�E‰ü•Ï“™‚ÌŒ —˜‚Í Ruby ‚Ì‚»‚ê‚É�€‚¶‚Ü‚·�B�Ú‚µ‚‚Í README ‚ð“Ç‚ñ‚Å‚‚¾‚³‚¢�B
72 <H2>ƒCƒ“ƒXƒg�[ƒ‹‚ɂ‚¢‚Ä
</H2>
73 BigDecimal ‚ðŠÜ‚Þ Ruby ‚Ì�Å�V”Å‚Í
<A HREF=
"http://www.ruby-lang.org/ja/">RubyŒöŽ®ƒy�[ƒW
</A>‚©‚çƒ_ƒEƒ“ƒ��[ƒh‚Å‚«‚Ü‚·�B
74 ƒ_ƒEƒ“ƒ��[ƒh‚µ‚½�Å�V”Å‚ð‰ð“€‚µ‚½‚ç�A’Ê�í‚̃Cƒ“ƒXƒg�[ƒ‹Žè�‡‚ðŽÀ�s‚µ‚ĉº‚³‚¢�B
75 Ruby ‚ª�³‚µ‚ƒCƒ“ƒXƒg�[ƒ‹‚³‚ê‚ê‚Î�A“¯Žž‚É BigDecimal ‚à—˜—p‚Å‚«‚é‚悤‚É‚È‚é‚Í‚¸‚Å‚·�B
77 bigdecimal.c,bigdecimal.h
82 <H2>Žg—p•û–@‚ƃ�ƒ\ƒbƒh‚̈ꗗ
</H2>
83 �uRuby‚ÍŠù‚É�‘‚¯‚é�v‚Æ‚¢‚¤‘O’ñ‚Å�A
86 a=BigDecimal::new(
"0.123456789123456789")
87 b=BigDecimal(
"123456.78912345678",
40)
91 ‚Æ‚¢‚¤‚悤‚ÈŠ´‚¶‚ÅŽg—p‚µ‚Ü‚·�B
94 ˆÈ‰º‚̃�ƒ\ƒbƒh‚ª—˜—p‰Â”\‚Å‚·�B
95 �u—LŒøŒ…�”�v‚Æ‚Í BigDecimal ‚ª�¸“x‚ð•Û�Ø‚·‚錅�”‚Å‚·�B
96 ‚Ò‚Á‚½‚è‚Å‚Í‚ ‚è‚Ü‚¹‚ñ�AŽáŠ±‚Ì—]—T‚ðŽ�‚Á‚ÄŒvŽZ‚³‚ê‚Ü‚·�B
97 ‚Ü‚½�A—Ⴆ‚΂R‚Qƒrƒbƒg‚̃VƒXƒeƒ€‚Å‚Í‚P‚O�i‚Å‚SŒ…–ˆ‚ÉŒvŽZ‚µ‚Ü‚·�B�]‚Á‚Ä�AŒ»�ó‚Å‚Í�A
98 “à•”‚Ì�u—LŒøŒ…�”�v‚Í‚S‚Ì”{�”‚Æ‚È‚Á‚Ä‚¢‚Ü‚·�B
100 ˆÈ‰º‚̃�ƒ\ƒbƒhˆÈŠO‚É‚à�A(C ‚Å‚Í‚È‚¢) Ruby ƒ\�[ƒX‚ÌŒ`‚Å
101 ’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚à‚ ‚è‚Ü‚·�B—Ⴆ‚Î�A
103 require
"bigdecimal/math.rb"
105 ‚Æ‚·‚邱‚Æ‚Å�Asin ‚â cos ‚Æ‚¢‚Á‚½ŠÖ�”‚ªŽg—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·�B
106 Žg—p•û–@‚È‚Ç�A�Ú�×‚Í math.rb ‚Ì“à—e‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
108 ‚»‚Ì‘¼�AFloat ‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚Ȃǂ̃�ƒ\ƒbƒh‚ª util.rb ‚ŃTƒ|�[ƒg‚³‚ê‚Ä‚¢‚Ü‚·�B
111 require
"bigdecimal/util.rb"
113 ‚̂悤‚É‚µ‚Ü‚·�B�Ú�×‚Í util.rb ‚Ì“à—e‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
115 <H4><U>ƒNƒ‰ƒXƒ�ƒ\ƒbƒh
</U></H4>
117 <LI><B>new
</B></LI><BLOCKQUOTE>
118 �V‚µ‚¢ BigDecimal ƒIƒuƒWƒFƒNƒg‚ð�¶�¬‚µ‚Ü‚·�B
<BR>
119 a=BigDecimal::new(s[,n]) ‚Ü‚½‚Í
<BR>
120 a=BigDecimal(s[,n])
<BR>
121 s ‚Í�”Žš‚ð•\Œ»‚·‚é�‰Šú’l‚𕶎š—ñ‚ÅŽw’肵‚Ü‚·�B
122 ƒXƒy�[ƒX‚Í–³Ž‹‚³‚ê‚Ü‚·�B‚Ü‚½�A”»’f‚Å‚«‚È‚¢•¶Žš‚ª�oŒ»‚µ‚½Žž“_‚Å
123 •¶Žš—ñ‚Í�I—¹‚µ‚½‚à‚Ì‚Æ‚Ý‚È‚³‚ê‚Ü‚·�B
124 n ‚Í•K—v‚È—LŒøŒ…�”�ia ‚Ì�Å‘å—LŒøŒ…�”�j‚ð�®�”‚ÅŽw’肵‚Ü‚·�B
125 n ‚ª
0 ‚Ü‚½‚Í�È—ª‚³‚ꂽ‚Æ‚«‚Í�An ‚Ì’l‚Í s ‚Ì—LŒøŒ…�”‚Æ‚Ý‚È‚³‚ê‚Ü‚·�B
126 s ‚Ì—LŒøŒ…�”‚æ‚è n ‚ª�¬‚³‚¢‚Æ‚«‚à n=
0 ‚Ì‚Æ‚«‚Æ“¯‚¶‚Å‚·�B
127 a ‚Ì�Å‘å—LŒøŒ…�”‚Í n ‚æ‚èŽáŠ±‘å‚¢’l‚ª�Ì—p‚³‚ê‚Ü‚·�B
128 �Å‘å—LŒøŒ…�”‚͈ȉº‚̂悤‚ÈŠ„‚èŽZ‚ðŽÀ�s‚·‚é‚Æ‚«“™‚ɈӖ¡‚ðŽ�‚¿‚Ü‚·�B
130 BigDecimal(
"1") / BigDecimal(
"3") # =
> 0.3333333333 33E0
131 BigDecimal(
"1",
10) / BigDecimal(
"3",
10) # =
> 0.3333333333 3333333333 33333333E0
133 ‚½‚¾‚µ�AŒÂ�X‚̉‰ŽZ‚É‚¨‚¯‚é�Å‘å—LŒøŒ…�” n ‚ÌŽæ‚舵‚¢‚Í�«—ˆ‚̃o�[ƒWƒ‡ƒ“‚Å
134 ŽáŠ±•Ï�X‚³‚ê‚é‰Â”\�«‚ª‚ ‚è‚Ü‚·�B
137 <LI><B>mode
</B></LI><BLOCKQUOTE>
138 f = BigDecimal.mode(s[,v])
<BR>
139 BigDecimal‚ÌŽÀ�sŒ‹‰Ê‚ð�§Œä‚µ‚Ü‚·�B‘æ‚Qˆø�”‚ð�È—ª�A‚Ü‚½‚Í nil ‚ðŽw’è‚·‚é‚Æ
140 Œ»�ó‚Ì�Ý’è’l‚ª–ß‚è‚Ü‚·�B
<BR>
141 ˆÈ‰º‚ÌŽg—p•û–@‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·�B
144 ŒvŽZŒ‹‰Ê‚ª”ñ�”(NaN)‚âƒ[ƒ�‚É‚æ‚é�œŽZ‚É‚È‚Á‚½‚Æ‚«‚Ì�ˆ—�‚ð’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
146 f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag)
<BR>
147 f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag)
<BR>
148 f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag)
<BR>
149 f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag)
<BR>
150 f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag)
<BR>
151 f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)
<BR>
154 EXCEPTION_NaN ‚ÍŒ‹‰Ê‚ª NaN ‚É‚È‚Á‚½‚Æ‚«‚ÌŽw’è‚Å‚·�B
<BR>
155 EXCEPTION_INFINITY ‚ÍŒ‹‰Ê‚ª–³ŒÀ‘å(�}Infinity)‚É‚È‚Á‚½‚Æ‚«‚ÌŽw’è‚Å‚·�B
<BR>
156 EXCEPTION_UNDERFLOW ‚ÍŽw�”•”‚ªƒAƒ“ƒ_�[ƒtƒ��[‚·‚é‚Æ‚«‚ÌŽw’è‚Å‚·�B
<BR>
157 EXCEPTION_OVERFLOW ‚ÍŽw�”•”‚ªƒI�[ƒo�[ƒtƒ��[‚·‚é‚Æ‚«‚ÌŽw’è‚Å‚·�B
<BR>
158 EXCEPTION_ZERODIVIDE ‚̓[ƒ�‚É‚æ‚銄‚èŽZ‚ðŽÀ�s‚µ‚½‚Æ‚«‚ÌŽw’è‚Å‚·�B
<BR>
159 EXCEPTION_ALL ‚Í�A‰Â”\‚È‘S‚Ăɑ΂µ‚Ĉꊇ‚µ‚Ä�Ý’è‚·‚é‚Æ‚«‚ÉŽg—p‚µ‚Ü‚·�B
<BR><BR>
161 flag ‚ª true ‚Ì‚Æ‚«‚Í�AŽw’肵‚½�ó‘Ô‚É‚È‚Á‚½‚Æ‚«‚É—áŠO‚ð”�s‚·‚é‚悤‚É‚È‚è‚Ü‚·�B
<BR>
162 flag ‚ª false�iƒfƒtƒHƒ‹ƒg�j‚È‚ç�A—áŠO‚Í”�s‚³‚ê‚Ü‚¹‚ñ�BŒvŽZŒ‹‰Ê‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·�B
<BR>
164 EXCEPTION_NaN ‚Ì‚Æ‚«�A”ñ�”(NaN)
<BR>
165 EXCEPTION_INFINITY ‚Ì‚Æ‚«�A–³ŒÀ(+ or -Infinity)
<BR>
166 EXCEPTION_UNDERFLOW ‚Ì‚Æ‚«�Aƒ[ƒ�
<BR>
167 EXCEPTION_OVERFLOW ‚Ì‚Æ‚«�A+Infinity ‚© -Infinity
<BR>
168 EXCEPTION_ZERODIVIDE ‚Ì‚Æ‚«�A+Infinity ‚© -Infinity
<BR>
170 EXCEPTION_INFINITY�AEXCEPTION_OVERFLOW�AEXCEPTION_ZERODIVIDE
171 ‚Í�¡‚Ì‚Æ‚±‚듯‚¶‚Å‚·�B
<BR>
172 –ß‚è’l‚Í�A�Ý’èŒã‚Ì’l‚Å‚·�B�u’l�v‚̈Ӗ¡‚Í�A—Ⴆ‚Î
173 BigDecimal::EXCEPTION_NaN‚Æ�u’l�v‚Ì & ‚ª ƒ[ƒ�ˆÈŠO‚È‚ç‚Î
174 EXCEPTION_NaN‚ª�ݒ肳‚ê‚Ä‚¢‚é‚Æ‚¢‚¤ˆÓ–¡‚Å‚·�B
177 <B>[ŠÛ‚ß�ˆ—�Žw’è]
</B><P>
178 ŒvŽZ“r’†‚ÌŠÛ‚ß‘€�ì‚ÌŽw’肪‚Å‚«‚Ü‚·�B
180 f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
182 ‚ÌŒ`Ž®‚ÅŽw’肵‚Ü‚·�B
<BR>
183 ‚±‚±‚Å�Aflag ‚͈ȉº(Š‡ŒÊ“à‚͑Ήž‚·‚éƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh)‚̈ê‚‚ðŽw’肵‚Ü‚·�B
185 <TR><TD>ROUND_UP
</TD><TD>‘S‚Ä�Ø‚è�ã‚°‚Ü‚·�B
</TD></TR>
186 <TR><TD>ROUND_DOWN
</TD><TD>‘S‚Ä�Ø‚èŽÌ‚Ä‚Ü‚·(truncate)�B
</TD></TR>
187 <TR><TD>ROUND_HALF_UP
</TD><TD>ŽlŽÌŒÜ“ü‚µ‚Ü‚·(ƒfƒtƒHƒ‹ƒg)�B
</TD></TR>
188 <TR><TD>ROUND_HALF_DOWN
</TD><TD>ŒÜŽÌ˜Z“ü‚µ‚Ü‚·�B
</TD></TR>
189 <TR><TD>ROUND_HALF_EVEN
</TD><TD>ŽlŽÌ˜Z“ü‚µ‚Ü‚·�B‚T‚ÌŽž‚Í�ãˆÊ‚PŒ…‚ªŠï�”‚ÌŽž‚Ì‚ÝŒJ‚è�ã‚°‚Ü‚·(Banker's rounding)�B
</TD></TR>
190 <TR><TD>ROUND_CEILING
</TD><TD>�”’l‚Ì‘å‚«‚¢•û‚ÉŒJ‚è�ã‚°‚Ü‚·(ceil)�B
</TD></TR>
191 <TR><TD>ROUND_FLOOR
</TD><TD>�”’l‚Ì�¬‚³‚¢•û‚ÉŒJ‚艺‚°‚Ü‚·(floor)�B
</TD></TR>
194 –ß‚è’l‚ÍŽw’èŒã‚Ì flag ‚Ì’l‚Å‚·�B
195 ‘æ‚Qˆø�”‚É nil ‚ðŽw’è‚·‚é‚Æ�AŒ»�ó‚Ì�Ý’è’l‚ª•Ô‚è‚Ü‚·�B
196 mode ƒ�ƒ\ƒbƒh‚Å‚ÍŠÛ‚ß‘€�ì‚̈ʒu‚ðƒ†�[ƒU‚ªŽw’è‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ�B
197 ŠÛ‚ß‘€�ì‚ƈʒu‚ðŽ©•ª‚Å�§Œä‚µ‚½‚¢�ê�‡‚Í BigDecimal::limit ‚â truncate/round/ceil/floor�A
198 add/sub/mult/div ‚Æ‚¢‚Á‚½ƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh‚ðŽg—p‚µ‚ĉº‚³‚¢�B
200 <LI><B>limit([n])
</B></LI><BLOCKQUOTE>
201 �¶�¬‚³‚ê‚éBigDecimalƒIƒuƒWƒFƒNƒg‚Ì�ő包�”‚ðnŒ…‚É�§ŒÀ‚µ‚Ü‚·�B
202 –ß‚è’l‚Í�Ý’è‚·‚é‘O‚Ì’l‚Å‚·�B�Ý’è’l‚̃fƒtƒHƒ‹ƒg’l‚Í‚O‚Å�AŒ…�”–³�§ŒÀ‚Æ‚¢‚¤ˆÓ–¡‚Å‚·�B
203 n ‚ðŽw’肵‚È‚¢�A‚Ü‚½‚Í n ‚ª nil ‚Ì�ê�‡‚Í�AŒ»�ó‚Ì�ő包�”‚ª•Ô‚è‚Ü‚·�B
<BR>
204 ŒvŽZ‚ð‘±�s‚·‚éŠÔ‚É�A�”Žš‚ÌŒ…�”‚ª–³�§ŒÀ‚É‘�‚¦‚Ä‚µ‚Ü‚¤‚悤‚È�ê�‡
205 limit ‚Å—\‚ߌ…�”‚ð�§ŒÀ‚Å‚«‚Ü‚·�B‚±‚Ì�ê�‡ BigDecimal.mode ‚ÅŽw’肳‚ꂽ
206 ŠÛ‚ß�ˆ—�‚ªŽÀ�s‚³‚ê‚Ü‚·�B
207 ‚½‚¾‚µ�AƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh (truncate/round/ceil/floor/add/sub/mult/div) ‚Ì
208 Œ…�”�§ŒÀ‚Í limit ‚æ‚è—D�悳‚ê‚Ü‚·�B
<BR>
209 mf = BigDecimal::limit(n)
<BR>
212 <LI><B>double_fig
</B></LI><BLOCKQUOTE>
213 Ruby ‚Ì Float ƒNƒ‰ƒX‚ª•ÛŽ�‚Å‚«‚é—LŒø�”Žš‚Ì�”‚ð•Ô‚µ‚Ü‚·�B
215 p BigDecimal::double_fig # ==
> 20 (depends on the CPU etc.)
217 double_fig‚͈ȉº‚Ì C ƒvƒ�ƒOƒ‰ƒ€‚ÌŒ‹‰Ê‚Æ“¯‚¶‚Å‚·�B
221 while(v +
1.0 > 1.0) {
228 <LI><B>BASE
</B></LI><BLOCKQUOTE>
229 “à•”‚ÅŽg—p‚³‚ê‚éŠî�”‚Ì’l‚Å‚·�B�®�”‚ª
32 ƒrƒbƒg‚Ì�ˆ—�Œn‚Å‚Í
10000‚Å‚·�B
<BR>
230 b = BigDecimal::BASE
<BR>
234 <H4><U>ƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh
</U></H4>
236 <LI><B>+
</B></LI><BLOCKQUOTE>
237 ‰ÁŽZ�ic = a + b�j
<BR>
238 c ‚Ì�¸“x‚ɂ‚¢‚Ä‚Í�u
<A HREF=
"#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</A>�v‚ðŽQ�Æ‚µ‚Ä‚‚¾‚³‚¢�B
241 <LI><B>-
</B></LI><BLOCKQUOTE>
242 Œ¸ŽZ�ic = a - b�j�A‚Ü‚½‚Í•„�†”½“]�ic = -a�j
<BR>
243 c ‚Ì�¸“x‚ɂ‚¢‚Ä‚Í�u
<A HREF=
"#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</A>�v‚ðŽQ�Æ‚µ‚Ä‚‚¾‚³‚¢�B
246 <LI><B>*
</B></LI><BLOCKQUOTE>
248 c‚Ì�¸“x‚Í(a‚Ì�¸“x)+(b‚Ì�¸“x)’ö“x‚Å‚·�B
<br>
249 �Ú‚µ‚‚Í�u
<A HREF=
"#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</A>�v‚ðŽQ�Æ‚µ‚Ä‚‚¾‚³‚¢�B
252 <LI><B>/
</B></LI><BLOCKQUOTE>
254 c ‚Ì�¸“x‚ɂ‚¢‚Ä‚Í�u
<A HREF=
"#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</A>�v‚ðŽQ�Æ‚µ‚Ä‚‚¾‚³‚¢�B
258 <LI><B>add(b,n)
</B></LI><BLOCKQUOTE>
259 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B
<BR>
261 c = a + b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B
<BR>
262 a + b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B
<BR>
263 n ‚ªƒ[ƒ�‚È‚ç + ‚Æ“¯‚¶‚Å‚·�B
265 <LI><B>sub(b,n)
</B></LI><BLOCKQUOTE>
266 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B
<BR>
268 c = a - b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B
<BR>
269 a - b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B
<BR>
270 n ‚ªƒ[ƒ�‚È‚ç - ‚Æ“¯‚¶‚Å‚·�B
273 <LI><B>mult(b,n)
</B></LI><BLOCKQUOTE>
274 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B
<BR>
276 c = a * b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B
<BR>
277 a * b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B
<BR>
278 n ‚ªƒ[ƒ�‚È‚ç * ‚Æ“¯‚¶‚Å‚·�B
281 <LI><B>div(b[,n])
</B></LI><BLOCKQUOTE>
282 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B
<BR>
284 c = a / b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B
285 a / b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B
<BR>
286 n ‚ªƒ[ƒ�‚È‚ç / ‚Æ“¯‚¶‚Å‚·�B
<BR>
287 n ‚ª�È—ª‚³‚ꂽ‚Æ‚«‚Í Float#div ‚Æ“¯—l‚ÉŒ‹‰Ê‚ª�®�”(BigDecimal)‚É‚È‚è‚Ü‚·�B
290 <LI><B>fix
</B></LI><BLOCKQUOTE>
291 a ‚Ì�¬�”“_ˆÈ‰º‚Ì�Ø‚èŽÌ‚Ä�B
<BR>
294 <LI><B>frac
</B></LI><BLOCKQUOTE>
295 a ‚Ì�®�”•”•ª‚Ì�Ø‚èŽÌ‚Ä�B
<BR>
299 <LI><B>floor[(n)]
</B></LI><BLOCKQUOTE>
301 a ˆÈ‰º‚Ì�Å‘å�®�”�iBigDecimal ’l�j‚ð•Ô‚µ‚Ü‚·�B
303 c = BigDecimal(
"1.23456").floor # ==
> 1
304 c = BigDecimal(
"-1.23456").floor # ==
> -
2
306 ˆÈ‰º‚̂悤‚Ɉø�” n ‚ð—^‚¦‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
<BR>
307 n
>=
0 ‚È‚ç�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð‘€�삵‚Ü‚·(��”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B
<BR>
308 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ð‘€�삵‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�‚È‚‚Æ‚à n ŒÂ‚Ì
0 ‚ª•À‚Ñ‚Ü‚·)�B
<BR>
310 c = BigDecimal(
"1.23456").floor(
4) # ==
> 1.2345
311 c = BigDecimal(
"15.23456").floor(-
1) # ==
> 10.0
315 <LI><B>ceil[(n)]
</B></LI><BLOCKQUOTE>
317 a ˆÈ�ã‚Ì�®�”‚Ì‚¤‚¿�A�Å‚à�¬‚³‚¢�®�”‚ðŒvŽZ‚µ�A‚»‚Ì’l�iBigDecimal ’l�j‚ð•Ô‚µ‚Ü‚·�B
319 c = BigDecimal(
"1.23456").ceil # ==
> 2
320 c = BigDecimal(
"-1.23456").ceil # ==
> -
1
323 ˆÈ‰º‚̂悤‚Ɉø�”‚ð—^‚¦‚Ä�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð‘€�ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
<BR>
324 n
>=
0 ‚È‚ç�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð‘€�삵‚Ü‚·(��”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B
<BR>
325 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ð‚ð‘€�삵‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�‚È‚‚Æ‚à n ŒÂ‚Ì
0 ‚ª•À‚Ñ‚Ü‚·)�B
<BR>
327 c = BigDecimal(
"1.23456").ceil(
4) # ==
> 1.2346
328 c = BigDecimal(
"15.23456").ceil(-
1) # ==
> 20.0
332 <LI><B>round[(n[,b])]
</B></LI><BLOCKQUOTE>
335 ƒNƒ‰ƒXƒ�ƒ\ƒbƒh BigDecimal::mode(BigDecimal::ROUND_MODE,flag) ‚ÅŽw’肵‚½
336 ROUND_MODE ‚É�]‚Á‚ÄŠÛ‚ß‘€�ì‚ðŽÀ�s‚µ‚Ü‚·�B
337 BigDecimal::mode(BigDecimal::ROUND_MODE,flag) ‚ʼn½‚àŽw’肹‚¸�A‚©‚Â�Aˆø�”
338 ‚ðŽw’肵‚È‚¢�ê�‡‚Í�u�¬�”“_ˆÈ‰º‘æˆêˆÊ‚Ì�”‚ðŽlŽÌŒÜ“ü‚µ‚Ä�®�”�iBigDecimal ’l�j�v‚É‚µ‚Ü‚·�B
<BR>
340 c = BigDecimal(
"1.23456").round # ==
> 1
341 c = BigDecimal(
"-1.23456").round # ==
> -
1
344 ˆÈ‰º‚̂悤‚Ɉø�”‚ð—^‚¦‚Ä�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð‘€�ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
<BR>
345 n ‚ª�³‚ÌŽž‚Í�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ðŠÛ‚ß‚Ü‚·(��”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B
<BR>
346 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ðŠÛ‚ß‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�‚È‚‚Æ‚à n ŒÂ‚Ì
0 ‚ª•À‚Ñ‚Ü‚·)�B
348 c = BigDecimal(
"1.23456").round(
4) # ==
> 1.2346
349 c = BigDecimal(
"15.23456").round(-
1) # ==
> 20.0
351 ‚Q”Ԗڂ̈ø�”‚ðŽw’è‚·‚é‚Æ�ABigDecimal#mode ‚ÌŽw’è‚𖳎‹‚µ‚Ä�AŽw’肳‚ꂽ•û–@‚Å
352 ŠÛ‚ß‘€�ì‚ðŽÀ�s‚µ‚Ü‚·�B
354 c = BigDecimal(
"1.23456").round(
3,BigDecimal::ROUND_HALF_EVEN) # ==
> 1.234
355 c = BigDecimal(
"1.23356").round(
3,BigDecimal::ROUND_HALF_EVEN) # ==
> 1.234
359 <LI><B>truncate
</B></LI><BLOCKQUOTE>
361 �¬�”“_ˆÈ‰º‚Ì�”‚ð�Ø‚èŽÌ‚Ä‚Ä�®�”�iBigDecimal ’l�j‚É‚µ‚Ü‚·�B
<BR>
362 ˆÈ‰º‚̂悤‚Ɉø�”‚ð—^‚¦‚Ä�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð‘€�ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
<BR>
363 n ‚ª�³‚ÌŽž‚Í�A�¬�”“_ˆÈ‰º n+
1 ˆÊ‚Ì�”Žš‚ð�Ø‚èŽÌ‚Ä‚Ü‚·(��”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B
364 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ð‚ð‘€�삵‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�‚È‚‚Æ‚à n ŒÂ‚Ì
0 ‚ª•À‚Ñ‚Ü‚·)�B
<BR>
366 c = BigDecimal(
"1.23456").truncate(
4) # ==
> 1.2345
367 c = BigDecimal(
"15.23456").truncate(-
1) # ==
> 10.0
372 <LI><B>abs
</B></LI><BLOCKQUOTE>
377 <LI><B>to_i
</B></LI><BLOCKQUOTE>
378 ��”“_ˆÈ‰º‚ð�Ø‚èŽÌ‚Ä‚Ä�®�”‚É•ÏŠ·‚µ‚Ü‚·�B
<BR>
380 i ‚Í’l‚ɉž‚¶‚Ä Fixnum ‚© Bignum ‚É‚È‚è‚Ü‚·�B
381 a ‚ª Infinity ‚â NaN ‚Ì‚Æ‚«�Ai ‚Í nil ‚É‚È‚è‚Ü‚·�B
383 <LI><B>to_f
</B></LI><BLOCKQUOTE>
384 Float ƒIƒuƒWƒFƒNƒg‚É•ÏŠ·‚µ‚Ü‚·�B
385 ‚æ‚è‚«‚ß�ׂ©‚¢’l‚ª•K—v‚È‚ç‚Î split ƒ�ƒ\ƒbƒh‚ð—˜—p‚µ‚Ä
388 <LI><B>to_s[(n)]
</B></LI><BLOCKQUOTE>
389 •¶Žš—ñ‚É•ÏŠ·‚µ‚Ü‚·(ƒfƒtƒHƒ‹ƒg‚Í
"0.xxxxxEn" ‚ÌŒ`‚É‚È‚è‚Ü‚·�j�B
391 BigDecimal(
"1.23456").to_s # ==
> "0.123456E1"
393 ˆø�” n ‚É�³‚Ì�®�”‚ªŽw’肳‚ꂽ‚Æ‚«‚Í�A��”“_‚Å•ª‚¯‚ç‚ê‚é�¶‰E•”•ª‚ð�A‚»‚ꂼ‚ê n Œ…–ˆ
396 BigDecimal(
"0.1234567890123456789").to_s(
10) # ==
> "0.1234567890 123456789E0"
398 ˆø�” n ‚É�³‚Ì�®�”‚ð•\‚·•¶Žš—ñ‚ðŽw’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
400 BigDecimal(
"0.1234567890123456789").to_s(
"10") # ==
> "0.1234567890 123456789E0"
402 •¶Žš—ñ‚Ì�Å�‰‚É '+'�i‚Ü‚½‚Í ' '�j‚ð•t‚¯‚é‚Æ�A’l‚ª�³‚Ì�ê�‡�A�擪‚É '+'�i‚Ü‚½‚Í ' '�j‚ª•t‚«‚Ü‚·
403 �i•‰‚Ì�ê�‡‚Í�A�í‚É '-' ‚ª•t‚«‚Ü‚·�B�j�B
405 BigDecimal(
"0.1234567890123456789").to_s(
" 10") # ==
> " 0.1234567890 123456789E0"
406 BigDecimal(
"0.1234567890123456789").to_s(
"+10") # ==
> "+0.1234567890 123456789E0"
407 BigDecimal(
"-0.1234567890123456789").to_s(
"10") # ==
> "-0.1234567890 123456789E0"
410 ‚³‚ç‚É•¶Žš—ñ‚Ì�ÅŒã‚É E(‚Ü‚½‚Í e) ‚© F(‚Ü‚½‚Í f) ‚ðŽw’è‚·‚邱‚Æ‚Å�AˆÈ‰º‚̂悤‚É
411 •\Ž¦Œ`Ž®‚ð•Ï�X‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
413 BigDecimal(
"1234567890.123456789").to_s(
"E") # ==
> "0.1234567890123456789E10"
414 BigDecimal(
"1234567890.123456789").to_s(
"F") # ==
> "1234567890.123456789"
415 BigDecimal(
"1234567890.123456789").to_s(
"5E") # ==
> "0.12345 67890 12345 6789E10"
416 BigDecimal(
"1234567890.123456789").to_s(
"5F") # ==
> "12345 67890.12345 6789"
420 <LI><B>exponent
</B></LI><BLOCKQUOTE>
421 Žw�”•”‚ð�®�”’l‚Å•Ô‚µ‚Ü‚·�B
423 ‚Í a ‚Ì’l‚ª
0.xxxxxxx*
10**n ‚ðˆÓ–¡‚µ‚Ü‚·�B
426 <LI><B>precs
</B></LI><BLOCKQUOTE>
428 a ‚Ì—LŒø�”Žš (n) ‚Æ�Å‘å—LŒø�”Žš (m) ‚Ì”z—ñ‚ð•Ô‚µ‚Ü‚·�B
432 <LI><B>sign
</B></LI><BLOCKQUOTE>
433 ’l‚ª�³(sign
> 0)�A•‰(sign
< 0)�A‚»‚Ì‘¼(sigh==
0)‚Å‚ ‚é‚©‚Ì�î•ñ‚ð•Ô‚µ‚Ü‚·�B
435 ‚Æ‚µ‚½‚Æ‚« n ‚Ì’l‚Í a ‚ªˆÈ‰º‚Ì‚Æ‚«‚ðˆÓ–¡‚µ‚Ü‚·�B
<BR>
436 () ‚Ì’†‚Ì�”Žš‚Í�AŽÀ�Û‚Ì’l‚Å‚·(
<A HREF=
"#STRUCT">�u“à•”�\‘¢�v
</A>‚ðŽQ�Æ)�B
<BR>
437 n = BigDecimal::SIGN_NaN(
0) : a ‚Í NaN
<BR>
438 n = BigDecimal::SIGN_POSITIVE_ZERO(
1) : a ‚Í +
0<BR>
439 n = BigDecimal::SIGN_NEGATIVE_ZERO(-
1) : a ‚Í -
0<BR>
440 n = BigDecimal::SIGN_POSITIVE_FINITE(
2) : a ‚Í�³‚Ì’l
<BR>
441 n = BigDecimal::SIGN_NEGATIVE_FINITE(-
2) : a ‚Í•‰‚Ì’l
<BR>
442 n = BigDecimal::SIGN_POSITIVE_INFINITE(
3) : a ‚Í+Infinity
<BR>
443 n = BigDecimal::SIGN_NEGATIVE_INFINITE(-
3) : a ‚Í-Infinity
<BR>
446 <LI><B>nan?
</B></LI><BLOCKQUOTE>
447 a.nan? ‚Í a ‚ªNaN‚Ì‚Æ‚«�^‚ð•Ô‚µ‚Ü‚·�B
449 <LI><B>infinite?
</B></LI><BLOCKQUOTE>
450 a.infinite? ‚Í a ‚ª+�‡‚Ì‚Æ‚«
1 �A-�‡‚Ì‚Æ‚«‚Í -
1�A‚»‚êˆÈŠO‚Ì‚Æ‚«‚Í nil ‚ð•Ô‚µ‚Ü‚·�B
452 <LI><B>finite?
</B></LI><BLOCKQUOTE>
453 a.finite? ‚Í a ‚ª�‡‚Ü‚½‚Í NaN ‚Å‚È‚¢‚Æ‚«�^‚ð•Ô‚µ‚Ü‚·�B
456 <LI><B>zero?
</B></LI><BLOCKQUOTE>
457 a ‚ª
0 ‚È‚ç true ‚É‚È‚è‚Ü‚·�B
<BR>
460 <LI><B>nonzero?
</B></LI><BLOCKQUOTE>
461 a ‚ª
0 ‚È‚ç nil�A0 ˆÈŠO‚È‚ç a ‚»‚Ì‚à‚Ì‚ª•Ô‚è‚Ü‚·�B
<BR>
465 <LI><B>split
</B></LI><BLOCKQUOTE>
466 BigDecimal ’l‚ð
0.xxxxxxx*
10**n ‚Æ•\Œ»‚µ‚½‚Æ‚«‚É�A•„�†�iNaN‚Ì‚Æ‚«‚Í
467 0�A‚»‚êˆÈŠO‚Í+
1‚©-
1‚É‚È‚è‚Ü‚·�j�A
468 ‰¼�”•”•ª‚Ì•¶Žš—ñ�i
"xxxxxxx"�j‚Æ�AŠî�”�i10�j�A�X‚ÉŽw�” n ‚ð”z—ñ‚Å
470 a=BigDecimal::new(
"3.14159265")
<BR>
471 f,x,y,z = a.split
<BR>
472 ‚Æ‚·‚é‚Æ�Af=+
1�
Ax=
"314159265"�Ay=
10�Az=
1‚É‚È‚è‚Ü‚·�B
<BR>
475 b = f*(s.to_f)*(y**z)
<BR>
476 ‚Å Float ‚É•ÏŠ·‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
478 <LI><B>inspect
</B></LI><BLOCKQUOTE>
479 ƒfƒoƒbƒO�o—Í‚ÉŽg—p‚³‚ê‚Ü‚·�B
<BR>
480 p a=BigDecimal::new(
"3.14",
10)
<BR>
481 ‚Æ‚·‚é‚Æ�A[
0x112344:'
0.314E1',
4(
12)]‚̂悤‚É�o—Í‚³‚ê‚Ü‚·�B
482 �Å�‰‚Ì
16�i�”‚̓IƒuƒWƒFƒNƒg‚̃AƒhƒŒƒX�AŽŸ‚Ì '
0.314E1' ‚Í’l�A
483 ŽŸ‚Ì
4‚ÍŒ»�Ý‚Ì—LŒøŒ…�”(•\Ž¦‚æ‚èŽáŠ±‘å‚«‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·)�A
484 �ÅŒã‚̓IƒuƒWƒFƒNƒg‚ªŽæ‚蓾‚é�ő包�”‚É‚È‚è‚Ü‚·�B
486 <LI><B>**
</B></LI><BLOCKQUOTE>
487 a ‚Ì n �æ‚ðŒvŽZ‚µ‚Ü‚·�B‚Ž‚Í�®�”�B
<BR>
489 Œ‹‰Ê‚Æ‚µ‚Ä c ‚Ì—LŒøŒ…‚Í a ‚Ì n ”{ˆÈ�ã‚É‚È‚é‚Ì‚Å’�ˆÓ�B
491 <LI><B>power
</B></LI><BLOCKQUOTE>
492 ** ‚Æ“¯‚¶‚Å�Aa ‚Ì n �æ‚ðŒvŽZ‚µ‚Ü‚·�B‚Ž‚Í�®�”�B
<BR>
494 Œ‹‰Ê‚Æ‚µ‚Ä c ‚Ì—LŒøŒ…‚Í a ‚Ì n ”{ˆÈ�ã‚É‚È‚é‚Ì‚Å’�ˆÓ�B
496 <LI><B>sqrt
</B></LI><BLOCKQUOTE>
497 a‚Ì—LŒøŒ… n Œ…‚Ì•½•û�ª�in ‚Ì•½•û�ª‚Å‚Í‚ ‚è‚Ü‚¹‚ñ�j‚ð
498 ƒjƒ…�[ƒgƒ“–@‚ÅŒvŽZ‚µ‚Ü‚·�B
<BR>
502 <LI><B>divmod,quo,modulo,%,remainder
</B></LI><BLOCKQUOTE>
503 �Ú�ׂ͑Ήž‚·‚é Float ‚ÌŠeƒ�ƒ\ƒbƒh‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
506 <LI><B><=>
</B></LI><BLOCKQUOTE>
507 a==b ‚È‚ç
0�Aa > b ‚È‚ç
1�Aa < b ‚È‚ç -
1 ‚É‚È‚è‚Ü‚·�B
<BR>
511 Œã‚Í�A“Ç‚ñ‚ÅŽš‚Ì”@‚‚Å‚·�B
<BR>
515 �u==�v‚Æ“¯‚¶‚Å‚·‚ª case •¶‚ÅŽg—p‚³‚ê‚Ü‚·�B
523 <H3>coerce‚ɂ‚¢‚Ä
</H3>
524 BigDecimal ƒIƒuƒWƒFƒNƒg‚ªŽZ�p‰‰ŽZŽq‚Ì�¶‚É‚ ‚é‚Æ‚«‚Í�ABigDecimal ƒIƒuƒWƒFƒNƒg‚ª
525 ‰E‚É‚ ‚éƒIƒuƒWƒFƒNƒg‚ð(•K—v‚È‚ç) BigDecimal ‚É•ÏŠ·‚µ‚Ä‚©‚çŒvŽZ‚µ‚Ü‚·�B
526 �]‚Á‚Ä�ABigDecimal ƒIƒuƒWƒFƒNƒgˆÈŠO‚Å‚à�”’l‚ðˆÓ–¡‚·‚é‚à‚Ì‚È‚ç‰E‚É’u‚¯‚Î
528 ‚½‚¾‚µ�A•¶Žš—ñ‚Í�i’Ê�í�j�”’l‚ÉŽ©“®•ÏŠ·‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ�B
529 •¶Žš—ñ‚ð�”’l‚ÉŽ©“®•ÏŠ·‚µ‚½‚¢�ê�‡‚Í bigfloat.c ‚Ì
530 �u/* #define ENABLE_NUMERIC_STRING */�v‚̃Rƒ�ƒ“ƒg‚ðŠO‚µ‚Ä‚©‚ç�A
531 �ăRƒ“ƒpƒCƒ‹�A�ăCƒ“ƒXƒg�[ƒ‹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·�B
532 •¶Žš—ñ‚Å�”’l‚ð—^‚¦‚é�ê�‡‚Í’�ˆÓ‚ª•K—v‚Å‚·�B�”’l‚É•ÏŠ·‚Å‚«‚È‚¢•¶Žš‚ª‚ ‚é‚Æ�A
533 ’P‚É•ÏŠ·‚ðŽ~‚߂邾‚¯‚ŃGƒ‰�[‚É‚Í‚È‚è‚Ü‚¹‚ñ�B
"10XX"‚È‚ç‚P‚O�A
"XXXX"‚Í‚O
537 c = a *
"0.123456789123456789123456789" # •¶Žš‚ð BigDecimal ‚É•ÏŠ·‚µ‚Ä‚©‚çŒvŽZ
539 –³ŒÀ‘å‚â”ñ�”‚ð•\‚·•¶Žš‚Æ‚µ‚Ä�A
"Infinity"�A
"+Infinity"�A
"-Infinity"�A
"NaN"
540 ‚àŽg—p‚Å‚«‚Ü‚·(‘啶Žš�E�¬•¶Žš‚ð‹æ•Ê‚µ‚Ü‚·)�B‚½‚¾‚µ�Amode ƒ�ƒ\ƒbƒh‚Å false ‚ð
541 Žw’肵‚½�ê�‡‚Í—áŠO‚ª”�¶‚µ‚Ü‚·�B
543 ‚Ü‚½�ABigDecimalƒNƒ‰ƒX‚Í coerce�iRuby–{ŽQ�Æ�j‚ðƒTƒ|�[ƒg‚µ‚Ä‚¢‚Ü‚·�B
544 �]‚Á‚Ä�ABigDecimal ƒIƒuƒWƒFƒNƒg‚ª‰E‚É‚ ‚é�ê�‡‚à‘å’ï‚Í‘å�ä•v‚Å‚·�B
545 ‚½‚¾�AŒ»�Ý‚Ì Ruby ƒCƒ“ƒ^ƒvƒŠƒ^‚ÌŽd—l�ã�A•¶Žš—ñ‚ª�¶‚É‚ ‚é‚ÆŒvŽZ‚Å‚«‚Ü‚¹‚ñ�B
<BR>
548 c =
"0.123456789123456789123456789" * a # ƒGƒ‰�[
550 •K—v�«‚ª‚ ‚é‚Æ‚ÍŽv‚¢‚Ü‚¹‚ñ‚ª�A‚Ç‚¤‚µ‚Ä‚à‚ÆŒ¾‚¤�l‚Í
551 String ƒIƒuƒWƒFƒNƒg‚ðŒp�³‚µ‚½�V‚½‚ȃNƒ‰ƒX‚ð�ì�¬‚µ‚Ä‚©‚ç�A
552 ‚»‚̃Nƒ‰ƒX‚Å coerce ‚ðƒTƒ|�[ƒg‚µ‚Ä‚‚¾‚³‚¢�B
556 <H2>–³ŒÀ�A”ñ�”�Aƒ[ƒ�‚̈µ‚¢
</H2>
557 �u–³ŒÀ�v‚Æ‚Í•\Œ»‚Å‚«‚È‚¢‚‚ç‚¢‘å‚«‚È�”‚Å‚·�B“Á•Ê‚Ɉµ‚¤‚½‚ß‚É
558 +Infinity�i�³‚Ì–³ŒÀ‘å�j‚â -Infinity�i•‰‚Ì–³ŒÀ‘å�j‚Æ‚¢‚¤
560 –³ŒÀ‚Í
1.0/
0.0 ‚̂悤‚Ƀ[ƒ�‚ÅŠ„‚é‚悤‚ÈŒvŽZ‚ð‚µ‚½‚Æ‚«‚É�¶�¬‚³‚ê‚Ü‚·�B
562 �u”ñ�”�v‚Í
0.0/
0.0 ‚â Infinity-Infinity “™‚ÌŒ‹‰Ê‚ª’è‹`‚Å‚«‚È‚¢
563 ŒvŽZ‚ð‚µ‚½‚Æ‚«‚É�¶�¬‚³‚ê‚Ü‚·�B”ñ�”‚Í NaN�iNot a Number�j‚Æ•\‹L‚³‚ê‚Ü‚·�B
564 NaN ‚ðŠÜ‚ÞŒvŽZ‚Í‘S‚Ä NaN ‚É‚È‚è‚Ü‚·�B‚Ü‚½ NaN ‚ÍŽ©•ª‚àŠÜ‚ß‚Ä�A‚Ç‚ñ‚È�”
567 ƒ[ƒ�‚Í +
0.0 ‚Æ -
0.0 ‚ª‘¶�Ý‚µ‚Ü‚·�B‚½‚¾‚µ�A+
0.0==-
0.0 ‚Í true ‚Å‚·�B
569 Infinity�ANaN�A +
0.0 ‚Æ -
0.0 “™‚ðŠÜ‚ñ‚¾ŒvŽZŒ‹‰Ê‚Í‘g‚Ý�‡‚킹‚É
570 ‚æ‚è•¡ŽG‚Å‚·�B‹»–¡‚Ì‚ ‚é�l‚Í�AˆÈ‰º‚̃vƒ�ƒOƒ‰ƒ€‚ðŽÀ�s‚µ‚ÄŒ‹‰Ê‚ð
571 Šm”F‚µ‚Ä‚‚¾‚³‚¢�iŒ‹‰Ê‚ɂ‚¢‚Ä�A‹^–â‚âŠÔˆá‚¢‚𔌩‚³‚ꂽ•û‚Í
578 aa = %w(
1 -
1 +
0.0 -
0.0 +Infinity -Infinity NaN)
579 ba = %w(
1 -
1 +
0.0 -
0.0 +Infinity -Infinity NaN)
580 opa = %w(+ - * / <=
> > >= < == != <=)
585 x = BigDecimal::new(a)
586 y = BigDecimal::new(b)
587 eval(
"ans= x #{op} y;print a,' ',op,' ',b,' ==> ',ans.to_s,\"\n\
"")
597 BigDecimal“à•”‚Å•‚“®�¬�”“_‚Í�\‘¢‘Ì(Real)‚Å•\Œ»‚³‚ê‚Ü‚·�B
598 ‚»‚Ì‚¤‚¿‰¼�”•”‚Í unsigned long ‚Ì”z—ñ(ˆÈ‰º‚Ì�\‘¢‘Ì—v‘ffrac)‚ÅŠÇ—�‚³‚ê‚Ü‚·�B
599 ŠT”O“I‚É‚Í�AˆÈ‰º‚̂悤‚É‚È‚è‚Ü‚·�B
<BR><BR>
600 <•‚“®�¬�”“_�”
> =
0.xxxxxxxxx*BASE**n
<BR><BR>
601 ‚±‚±‚Å�Ax‚͉¼�”•”‚ð•\‚·�”Žš�ABASE‚ÍŠî�”�i‚P‚O�i‚È‚ç‚P‚O�j�An‚ÍŽw�”•”‚ð•\‚·
602 �®�”’l‚Å‚·�BBASE‚ª‘å‚«‚¢‚Ù‚Ç�A‘å‚«‚È�”’l‚ª•\Œ»‚Å‚«‚Ü‚·�B‚‚܂è�A”z—ñ‚̃TƒCƒY‚ð
603 �‚È‚‚Å‚«‚Ü‚·�BBASE‚Í‘å‚«‚¢‚Ù‚Ç“s�‡‚ª‚æ‚¢‚킯‚Å‚·‚ª�AƒfƒoƒbƒO‚Ì‚â‚è‚â‚·‚³‚È‚Ç‚ð
604 �l—¶‚µ‚Ä�A10000‚É‚È‚Á‚Ä‚¢‚Ü‚·�iBASE‚ÍVpInit()ŠÖ�”‚ÅŽ©“®“I‚ÉŒvŽZ‚µ‚Ü‚·�j�B
605 ‚±‚ê‚Í�A32ƒrƒbƒg�®�”‚Ì�ê�‡‚Å‚·�B64ƒrƒbƒg�®�”‚Ì�ê�‡‚Í‚à‚Á‚Æ‘å‚«‚È’l‚É‚È‚è‚Ü‚·�B
606 Žc”O‚È‚ª‚ç�A64ƒrƒbƒg�®�”‚ł̃eƒXƒg‚Í‚Ü‚¾‚â‚Á‚Ä‚¢‚Ü‚¹‚ñ�i‚à‚µ�A‚â‚ç‚ꂽ•û‚ª‚¢‚ê‚Î
607 Œ‹‰Ê‚ð‹³‚¦‚Ä‚¢‚½‚¾‚¯‚ê‚΂ ‚肪‚½‚¢‚Å‚·�j�B
608 BASE‚ª
10000‚Ì‚Æ‚«‚Í�AˆÈ‰º‚̉¼�”•”‚Ì”z—ñ(frac)‚ÌŠe—v‘f‚É‚Í�Å‘å‚Å‚SŒ…‚Ì
609 �”Žš‚ªŠi”[‚³‚ê‚Ü‚·�B
<BR><BR>
610 •‚“®�¬�”“_�\‘¢‘Ì(Real)‚͈ȉº‚̂悤‚É‚È‚Á‚Ä‚¢‚Ü‚·�B
614 unsigned long MaxPrec; // �Å‘å�¸“x(frac[]‚Ì”z—ñƒTƒCƒY)
615 unsigned long Prec; // �¸“x(frac[]‚ÌŽg—pƒTƒCƒY)
616 short sign; // ˆÈ‰º‚̂悤‚É•„�†“™‚Ì�ó‘Ô‚ð’è‹`‚µ‚Ü‚·�B
624 unsigned short flag; // ŠeŽí‚Ì�§Œäƒtƒ‰ƒbƒO
625 int exponent; // Žw�”•”‚Ì’l(‰¼�”•”*BASE**exponent)
626 unsigned long frac[
1]; // ‰¼�”•”‚Ì”z—ñ(‰Â•Ï)
629 —Ⴆ‚Î
1234.56784321 ‚Æ‚¢‚¤�”Žš‚Í(BASE=
10000‚È‚ç)
<BR>
631 0.1234 5678 4321*(
10000)**
1
633 ‚Å‚·‚©‚ç frac[
0]=
1234�Afrac[
1]=
5678�Afrac[
2]=
4321�A
634 Prec=
3�Asign=
2�Aexponent=
1 ‚Æ‚È‚è‚Ü‚·�BMaxPrec‚Í
635 Prec ‚æ‚è‘å‚«‚¯‚ê‚΂¢‚‚Â‚Å‚à‚©‚Ü‚¢‚Ü‚¹‚ñ�Bflag ‚Ì
636 Žg—p•û–@‚ÍŽÀ‘•‚Ɉˑ¶‚µ‚Ä“à•”‚ÅŽg—p‚³‚ê‚Ü‚·�B
641 BigDecimal ‚Í <•‚“®�¬�”“_�”
> =
0.xxxxxxxxx*
10**n ‚Æ‚¢‚¤
10�iŒ`Ž®‚Å�”’l‚ð•ÛŽ�‚µ‚Ü‚·�B
642 ‚µ‚©‚µ�AŒvŽZ‹@‚Ì•‚“®�¬�”“_�”‚Ì“à•”•\Œ»‚Í�AŒ¾‚¤‚Ü‚Å‚à‚È‚ <•‚“®�¬�”“_�”
> =
0.bbbbbbbb*
2**n ‚Æ‚¢‚¤
643 2�iŒ`Ž®‚ª•�’Ê‚Å‚·(x ‚Í
0 ‚©‚ç
9 ‚Ü‚Å�Ab ‚Í
0 ‚©
1 ‚Ì�”Žš)�B
644 BigDecimal ‚ª‚È‚º
10�i‚Ì“à•”•\Œ»Œ`Ž®‚ð�Ì—p‚µ‚½‚Ì‚©‚ðˆÈ‰º‚É�à–¾‚µ‚Ü‚·�B
645 <H4>10�i‚̃�ƒŠƒbƒg
</H4>
647 <DT>ƒfƒoƒbƒO‚Ì‚µ‚â‚·‚³
648 <DD>‚Ü‚¸�Aƒvƒ�ƒOƒ‰ƒ€�ì�¬‚ªŠy‚Å‚·�Bfrac[
0]=
1234�Afrac[
1]=
5678�Afrac[
2]=
4321�A
649 exponent=
1�Asign=
2 ‚È‚ç�”’l‚ª
1234.56784321 ‚Å‚ ‚é‚Ì‚ÍŒ©‚ê‚Î’¼‚®‚É•ª‚©‚è‚Ü‚·�B
651 <DT>10�i•\‹L‚³‚ꂽ�”’l‚È‚çŠmŽÀ‚É“à•”•\Œ»‚É•ÏŠ·‚Å‚«‚é
652 <DD>—Ⴆ‚Î�AˆÈ‰º‚̂悤‚ȃvƒ�ƒOƒ‰ƒ€‚Í‘S‚Œë�·–³‚µ‚Å
653 ŒvŽZ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�BˆÈ‰º‚Ì—á‚Í�Aˆê�s‚Ɉê‚‚Ì�”’l
654 ‚ª�‘‚¢‚Ä‚ ‚éƒtƒ@ƒCƒ‹ file ‚Ì�‡Œv�”’l‚ð‹�‚ß‚é‚à‚Ì‚Å‚·�B
656 file = File::open(....,
"r")
657 s = BigDecimal::new(
"0")
658 while line = file.gets
662 ‚±‚Ì—á‚ð
2�i�”‚Å‚â‚é‚ÆŒë�·‚ª“ü‚è�ž‚މ”\�«‚ª‚ ‚è‚Ü‚·�B
663 —Ⴆ‚Î
0.1 ‚ð
2�i‚Å•\Œ»‚·‚é‚Æ
0.1 = b1*
2**(-
1)+b1*
2**(-
2)+b3*
2**(-
3)+b4*
2**(-
4)....
664 ‚Æ–³ŒÀ‚É‘±‚¢‚Ä‚µ‚Ü‚¢‚Ü‚·(b1=
0,b2=
0,b3=
0,b4=
1...)�B‚±‚±‚Å bn(n=
1,
2,
3,...) ‚Í
665 2�i‚ð•\Œ»‚·‚é
0 ‚©
1 ‚Ì�”Žš—ñ‚Å‚·�B�]‚Á‚Ä�A‚Ç‚±‚©‚Å‘Å‚¿�Ø‚é•K—v‚ª‚ ‚è‚Ü‚·�B
666 ‚±‚±‚Å•ÏŠ·Œë�·‚ª“ü‚è‚Ü‚·�B‚à‚¿‚ë‚ñ�A‚±‚ê‚ð�Ä“x10�i•\‹L‚É‚µ‚Ĉó�ü‚·‚é‚悤‚È
667 �ê�‡‚Í“K�Ø‚ÈŠÛ‚ß‘€�ì�iŽlŽÌŒÜ“ü�j‚É‚æ‚Á‚Ä�Ä‚Ñ
"0.1" ‚Æ•\Ž¦‚³‚ê‚Ü‚·�B‚µ‚©‚µ�A
668 “à•”‚Å‚Í�³Šm‚È
0.1 ‚Å‚Í‚ ‚è‚Ü‚¹‚ñ�B
670 <DT>—LŒøŒ…�”‚Í—LŒÀ‚Å‚ ‚é�i‚‚܂莩“®Œˆ’è‚Å‚«‚é�j
671 <DD>0.1 ‚ð•\Œ»‚·‚邽‚߂̗̈æ‚Í‚½‚Á‚½ˆê‚‚̔z—ñ—v‘f�i frac[
0]=
1 �j‚Å�Ï‚Ý‚Ü‚·�B
672 ”z—ñ—v‘f‚Ì�”‚Í
10�i�”’l‚©‚玩“®“I‚ÉŒˆ’è‚Å‚«‚Ü‚·�B‚±‚ê‚Í�A‰Â•Ï’·•‚“®�¬�”“_‰‰ŽZ‚Å‚Í
673 ‘厖‚È‚±‚Æ‚Å‚·�B‹t‚É
0.1 ‚ð
2�i•\Œ»‚µ‚½‚Æ‚«‚É‚Í
2�i‚Ì—LŒøŒ…‚ð‚¢‚‚‚ɂ·‚é‚Ì‚©
0.1 ‚ð
674 Œ©‚½‚¾‚¯‚Å‚ÍŒˆ’è‚Å‚«‚Ü‚¹‚ñ�B
677 <H3>10�i‚̃fƒ�ƒŠƒbƒg
</H3>
678 ŽÀ‚Í�¡‚܂ł̃�ƒŠƒbƒg‚Í�A‚»‚̂܂܃fƒ�ƒŠƒbƒg‚É‚à‚È‚è‚Ü‚·�B
679 ‚»‚à‚»‚à�A10�i‚ð
2�i‚É•ÏŠ·‚·‚é‚悤‚È‘€�ì‚Í•ÏŠ·Œë�·
680 ‚𔺂¤�ê�‡‚ð‰ñ”ð‚·‚é‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ�B
681 ‘åŠT‚̃Rƒ“ƒsƒ…�[ƒ^‚Í
10�i‚Ì“à•”•\Œ»‚ðŽ�‚Á‚Ä‚¢‚È‚¢‚Ì‚Å�A
682 BigDecimal ‚ð—˜—p‚µ‚ÄŒë�·–³‚µ‚ÌŒvŽZ‚ð‚·‚é�ê�‡‚Í�AŒvŽZ‘¬“x
683 ‚𖳎‹‚µ‚Ä‚à�ÅŒã‚Ü‚Å BigDecimal ‚ðŽg—p‘±‚¯‚é•K—v‚ª‚ ‚è‚Ü‚·�B
685 <H3>�Å�‰‚͉½‚©�H
</H3>
686 Ž©•ª‚ÅŒvŽZ‚·‚é‚Æ‚«‚É‚í‚´‚í‚´
2�i�”‚ðŽg‚¤�l‚Í‹É‚ß‚Ä‚Ü‚ê‚Å‚·�B
687 ŒvŽZ‹@‚Ƀf�[ƒ^‚ð“ü—Í‚·‚é‚Æ‚«‚à‚Ù‚Æ‚ñ‚Ç‚Ì�ê�‡�A
688 10�i�”‚Å“ü—Í‚µ‚Ü‚·�B‚»‚ÌŒ‹‰Ê�Adouble “™‚ÌŒvŽZ‹@“à•”
689 •\Œ»‚Í�Å�‰‚©‚çŒë�·‚ª“ü‚Á‚Ä‚¢‚é�ê�‡‚ª‚ ‚è‚Ü‚·�B
690 BigDecimal ‚̓†�[ƒU“ü—Í‚ðŒë�·–³‚µ‚ÅŽæ‚è�ž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·�B
691 ƒfƒoƒbƒO‚ª‚µ‚â‚·‚¢‚Ì‚Æ�Aƒf�[ƒ^“Ç‚Ý‚±‚ÝŽž‚ÉŒë�·‚ª“ü‚ç‚È‚¢
692 ‚Æ‚¢‚¤‚Ì‚ªŽÀ�ۂ̃�ƒŠƒbƒg‚Å‚·�B
696 <H2>ŒvŽZ�¸“x‚ɂ‚¢‚Ä
</H2>
697 c = a op b ‚Æ‚¢‚¤ŒvŽZ(op ‚Í + - * /)‚ð‚µ‚½‚Æ‚«‚Ì“®�ì‚Í
698 ˆÈ‰º‚̂悤‚É‚È‚è‚Ü‚·�B
<BR><BR>
699 ‚P�D�æŽZ‚Í(a ‚Ì—LŒøŒ…�”)+(b ‚Ì—LŒøŒ…�”)�A
700 �œŽZ‚Í(a ‚Ì�Å‘å—LŒøŒ…�”)+(b ‚Ì�Å‘å—LŒøŒ…�”)•ª‚Ì�ő包�”�iŽÀ�Û‚Í�A—]—T‚ðŽ�‚Á‚Ä�A
701 ‚à‚¤�‚µ‘å‚«‚‚È‚è‚Ü‚·�j‚ðŽ�‚•Ï�” c ‚ð�V‚½‚É�¶�¬‚µ‚Ü‚·�B
702 ‰ÁŒ¸ŽZ‚Ì�ê�‡‚Í�AŒë�·‚ª�o‚È‚¢‚¾‚¯‚Ì�¸“x‚ðŽ�‚ c ‚ð�¶�¬‚µ‚Ü‚·�B—Ⴆ‚Î
703 c =
0.1+
0.1*
10**(-
100) ‚̂悤‚È�ê�‡�Ac ‚Ì�¸“x‚Í‚P‚O‚OŒ…ˆÈ�ã‚Ì�¸“x‚ð
706 ‚Q�DŽŸ‚É c = a op b ‚ÌŒvŽZ‚ðŽÀ�s‚µ‚Ü‚·�B
<BR><BR>
707 ‚±‚̂悤‚É�A‰ÁŒ¸ŽZ‚Æ�æŽZ‚Å‚Ì c ‚Í•K‚¸�uŒë�·‚ª�o‚È‚¢�v‚¾‚¯‚Ì�¸“x‚ð
708 Ž�‚Á‚Ä�¶�¬‚³‚ê‚Ü‚·(BigDecimal.limit ‚ðŽw’肵‚È‚¢�ê�‡)�B
709 �œŽZ‚Í(a ‚Ì�Å‘å—LŒøŒ…�”)+(b ‚Ì�Å‘å—LŒøŒ…�”)•ª‚Ì�ő包�”
710 ‚ðŽ�‚ c ‚ª�¶�¬‚³‚ê‚Ü‚·‚ª�Ac =
1.0/
3.0 ‚̂悤‚ÈŒvŽZ‚Å–¾‚ç‚©‚Ȃ悤‚É�A
711 c ‚Ì�Å‘å�¸“x‚ð’´‚¦‚é‚Æ‚±‚ë‚ÅŒvŽZ‚ª‘Å‚¿�Ø‚ç‚ê‚é�ê�‡‚ª‚ ‚è‚Ü‚·�B
<BR><BR>
712 ‚¢‚¸‚ê‚É‚¹‚æ�Ac ‚Ì�Å‘å�¸“x‚Í a ‚â b ‚æ‚è‘å‚«‚‚È‚è‚Ü‚·‚Ì‚Å c ‚ª•K—v‚Æ‚·‚é
713 ƒ�ƒ‚ƒŠ�[—̈æ‚Í‘å‚«‚‚Ȃ邱‚Æ‚É’�ˆÓ‚µ‚ĉº‚³‚¢�B
715 ’�ˆÓ�F�u+,-,*,/�v‚Å‚ÍŒ‹‰Ê‚Ì�¸“x�i—LŒøŒ…�”�j‚ðŽ©•ª‚ÅŽw’è‚Å‚«‚Ü‚¹‚ñ�B
716 �¸“x‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡‚Í�AˆÈ‰º‚̃Cƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh‚ðŽg—p‚µ‚Ü‚·�B
<BR>
718 <LI>add,sub,mult,div
</LI><BLOCKQUOTE>
719 ‚±‚ê‚ç‚̃�ƒ\ƒbƒh‚Í�擪(�Å�¶)‚Ì�”Žš‚©‚ç‚ÌŒ…�”‚ðŽw’è‚Å‚«‚Ü‚·�B
721 BigDecimal(
"2").div(
3,
12) #
2.0/
3.0 =
> 0.6666666666 67E0
724 <LI>truncate,round,ceil,floor
</LI><BLOCKQUOTE>
725 ‚±‚ê‚ç‚̃�ƒ\ƒbƒh‚Í�¬�”“_‚©‚ç‚Ì‘Š‘Έʒu‚ðŽw’肵‚ÄŒ…�”‚ðŒˆ’è‚µ‚Ü‚·�B
727 BigDecimal(
"6.66666666666666").round(
12) # =
> 0.6666666666 667E1
731 <H3>Ž©•ª‚Å�¸“x‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡
</H3>
732 Ž©•ª‚Å�¸“x(—LŒøŒ…�”)‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡‚Í add�Asub�Amult�Adiv “™‚̃�ƒ\ƒbƒh
734 ˆÈ‰º‚̉~Žü—¦‚ðŒvŽZ‚·‚éƒvƒ�ƒOƒ‰ƒ€—á‚̂悤‚É�A
735 ‹�‚߂錅�”‚ÍŽ©•ª‚ÅŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
738 #!/usr/local/bin/ruby
742 # Calculates
3.1415.... (the number of times that a circle's diameter
743 # will fit around the circle) using J. Machin's formula.
745 def big_pi(sig) # sig: Number of significant figures
747 pi = BigDecimal::new(
"0")
748 two = BigDecimal::new(
"2")
749 m25 = BigDecimal::new(
"-0.04")
750 m57121 = BigDecimal::new(
"-57121")
752 u = BigDecimal::new(
"1")
753 k = BigDecimal::new(
"1")
754 w = BigDecimal::new(
"1")
755 t = BigDecimal::new(
"-80")
756 while (u.nonzero? && u.exponent
>= exp)
763 u = BigDecimal::new(
"1")
764 k = BigDecimal::new(
"1")
765 w = BigDecimal::new(
"1")
766 t = BigDecimal::new(
"956")
767 while (u.nonzero? && u.exponent
>= exp )
768 t = t.div(m57121,sig)
778 print
"PI("+ARGV[
0]+
"):\n"
779 p big_pi(ARGV[
0].to_i)
781 print
"TRY: ruby pi.rb 1000 \n"
789 <A HREF=
"http://www.tinyforest.gr.jp">
792 (E-Mail:
<A HREF=
"mailto:shigeo@tinyforest.gr.jp"><shigeo@tinyforest.gr.jp>
</U></A>)