Update to RDoc 2.1.0 r112
[rbx.git] / stdlib / ext / bigdecimal / bigdecimal_ja.html
blob37bbcbbb093812b22b6ab75fbbdb2e0a00f39721
1 <!-- saved from url=(0022)http://internet.e-mail -->
2 <HTML>
3 <HEAD>
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;
13 padding: 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;}
25 pre
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%
31 --></style>
33 <TITLE>BigDecimal:An extension library for Ruby</TITLE>
34 </HEAD>
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
41 <UL>
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>
44 </UL>
45 <hr>
46 <H2>–ÚŽŸ</H2>
47 <UL>
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>
54 </UL>
56 <HR>
57 <A NAME="#INTRO">
58 <H2>‚Í‚¶‚ß‚É</H2>
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
67 <BR><BR>
68 ‚±‚̃vƒ�ƒOƒ‰ƒ€‚Í�AŽ©—R‚É”z•z�E‰ü•Ï‚µ‚Ä�\‚¢‚Ü‚¹‚ñ�B‚½‚¾‚µ�A’˜�쌠‚Í•úŠü‚µ‚Ä‚¢‚Ü‚¹‚ñ�B
69 ”z•z�E‰ü•Ï“™‚ÌŒ —˜‚Í Ruby ‚Ì‚»‚ê‚É�€‚¶‚Ü‚·�B�Ú‚µ‚­‚Í README ‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢�B
71 <hr>
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
76 ƒ\�[ƒXƒtƒ@ƒCƒ‹‚Í
77 bigdecimal.c,bigdecimal.h
78 ‚Ì‚QŒÂ‚Ì‚Ý‚Å‚·�B<BR>
80 <hr>
81 <A NAME="#SPEC">
82 <H2>Žg—p•û–@‚ƃ�ƒ\ƒbƒh‚̈ꗗ</H2>
83 �uRuby‚ÍŠù‚É�‘‚¯‚é�v‚Æ‚¢‚¤‘O’ñ‚Å�A
84 <CODE><PRE>
85 require 'bigdecimal'
86 a=BigDecimal::new("0.123456789123456789")
87 b=BigDecimal("123456.78912345678",40)
88 c=a+b
89 </PRE></CODE>
90 <br>
91 ‚Æ‚¢‚¤‚悤‚ÈŠ´‚¶‚ÅŽg—p‚µ‚Ü‚·�B
93 <H3>ƒ�ƒ\ƒbƒhˆê——</H3>
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
99 <P>
100 ˆÈ‰º‚̃�ƒ\ƒbƒhˆÈŠO‚É‚à�A(C ‚Å‚Í‚È‚¢) Ruby ƒ\�[ƒX‚ÌŒ`‚Å
101 ’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚à‚ ‚è‚Ü‚·�B—Ⴆ‚Î�A
102 <CODE><PRE>
103 require "bigdecimal/math.rb"
104 </PRE></CODE>
105 ‚Æ‚·‚邱‚Æ‚Å�Asin ‚â cos ‚Æ‚¢‚Á‚½ŠÖ�”‚ªŽg—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·�B
106 Žg—p•û–@‚È‚Ç�A�Ú�×‚Í math.rb ‚Ì“à—e‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
108 ‚»‚Ì‘¼�AFloat ‚Æ‚Ì‘ŠŒÝ•ÏŠ·‚Ȃǂ̃�ƒ\ƒbƒh‚ª util.rb ‚ŃTƒ|�[ƒg‚³‚ê‚Ä‚¢‚Ü‚·�B
109 —˜—p‚·‚é‚É‚Í
110 <CODE><PRE>
111 require "bigdecimal/util.rb"
112 </PRE></CODE>
113 ‚̂悤‚É‚µ‚Ü‚·�B�Ú�×‚Í util.rb ‚Ì“à—e‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
115 <H4><U>ƒNƒ‰ƒXƒ�ƒ\ƒbƒh</U></H4>
116 <UL>
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
129 <CODE><PRE>
130 BigDecimal("1") / BigDecimal("3") # => 0.3333333333 33E0
131 BigDecimal("1",10) / BigDecimal("3",10) # => 0.3333333333 3333333333 33333333E0
132 </PRE></CODE>
133 ‚½‚¾‚µ�AŒÂ�X‚̉‰ŽZ‚É‚¨‚¯‚é�Å‘å—LŒøŒ…�” n ‚ÌŽæ‚舵‚¢‚Í�«—ˆ‚̃o�[ƒWƒ‡ƒ“‚Å
134 ŽáŠ±•Ï�X‚³‚ê‚é‰Â”\�«‚ª‚ ‚è‚Ü‚·�B
135 </BLOCKQUOTE>
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
143 <B>[—áŠO�ˆ—�]</B><P>
144 ŒvŽZŒ‹‰Ê‚ª”ñ�”(NaN)‚âƒ[ƒ�‚É‚æ‚é�œŽZ‚É‚È‚Á‚½‚Æ‚«‚Ì�ˆ—�‚ð’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
145 <BLOCKQUOTE>
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>
152 </BLOCKQUOTE>
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>
163 <BLOCKQUOTE>
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>
169 </BLOCKQUOTE>
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
179 <BLOCKQUOTE>
180 f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
181 </BLOCKQUOTE>
182 ‚ÌŒ`Ž®‚ÅŽw’肵‚Ü‚·�B<BR>
183 ‚±‚±‚Å�Aflag ‚͈ȉº(Š‡ŒÊ“à‚͑Ήž‚·‚éƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh)‚̈ê‚‚ðŽw’肵‚Ü‚·�B
184 <TABLE>
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>
193 </TABLE>
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
199 </BLOCKQUOTE>
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>
210 </BLOCKQUOTE>
212 <LI><B>double_fig</B></LI><BLOCKQUOTE>
213 Ruby ‚Ì Float ƒNƒ‰ƒX‚ª•ÛŽ�‚Å‚«‚é—LŒø�”Žš‚Ì�”‚ð•Ô‚µ‚Ü‚·�B
214 <CODE><PRE>
215 p BigDecimal::double_fig # ==> 20 (depends on the CPU etc.)
216 </PRE></CODE>
217 double_fig‚͈ȉº‚Ì C ƒvƒ�ƒOƒ‰ƒ€‚ÌŒ‹‰Ê‚Æ“¯‚¶‚Å‚·�B
218 <CODE><PRE>
219 double v = 1.0;
220 int double_fig = 0;
221 while(v + 1.0 > 1.0) {
222 ++double_fig;
223 v /= 10;
225 </PRE></CODE>
226 </BLOCKQUOTE>
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>
231 </BLOCKQUOTE>
232 </UL>
234 <H4><U>ƒCƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh</U></H4>
235 <UL>
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
239 </BLOCKQUOTE>
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
245 </BLOCKQUOTE>
246 <LI><B>*</B></LI><BLOCKQUOTE>
247 �æŽZ(c = a * b)<BR>
248 c‚Ì�¸“x‚Í(a‚Ì�¸“x)+(b‚Ì�¸“x)’ö“x‚Å‚·�B<br>
249 �Ú‚µ‚­‚Í�u<A HREF="#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä</A>�v‚ðŽQ�Æ‚µ‚Ä‚­‚¾‚³‚¢�B
251 </BLOCKQUOTE>
252 <LI><B>/</B></LI><BLOCKQUOTE>
253 �œŽZ(c = a / b)<BR>
254 c ‚Ì�¸“x‚ɂ‚¢‚Ä‚Í�u<A HREF="#PREC">ŒvŽZ�¸“x‚ɂ‚¢‚Ä</A>�v‚ðŽQ�Æ‚µ‚Ä‚­‚¾‚³‚¢�B
256 </BLOCKQUOTE>
258 <LI><B>add(b,n)</B></LI><BLOCKQUOTE>
259 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B<BR>
260 c = a.add(b,n)<BR>
261 c = a + b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B<BR>
262 a + b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B<BR>
263 n ‚ªƒ[ƒ�‚È‚ç + ‚Æ“¯‚¶‚Å‚·�B
264 </BLOCKQUOTE>
265 <LI><B>sub(b,n)</B></LI><BLOCKQUOTE>
266 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B<BR>
267 c = a.sub(b,n)<BR>
268 c = a - b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B<BR>
269 a - b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B<BR>
270 n ‚ªƒ[ƒ�‚È‚ç - ‚Æ“¯‚¶‚Å‚·�B
272 </BLOCKQUOTE>
273 <LI><B>mult(b,n)</B></LI><BLOCKQUOTE>
274 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B<BR>
275 c = a.mult(b,n)<BR>
276 c = a * b ‚ð�Å‘å‚Å n Œ…‚Ü‚ÅŒvŽZ‚µ‚Ü‚·�B<BR>
277 a * b ‚Ì�¸“x‚ª n ‚æ‚è‘å‚«‚¢‚Æ‚«‚Í BigDecimal.mode ‚ÅŽw’肳‚ꂽ•û–@‚ÅŠÛ‚ß‚ç‚ê‚Ü‚·�B<BR>
278 n ‚ªƒ[ƒ�‚È‚ç * ‚Æ“¯‚¶‚Å‚·�B
280 </BLOCKQUOTE>
281 <LI><B>div(b[,n])</B></LI><BLOCKQUOTE>
282 ˆÈ‰º‚̂悤‚ÉŽg—p‚µ‚Ü‚·�B<BR>
283 c = a.div(b,n)<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
288 </BLOCKQUOTE>
290 <LI><B>fix</B></LI><BLOCKQUOTE>
291 a ‚Ì�¬�”“_ˆÈ‰º‚Ì�Ø‚èŽÌ‚Ä�B<BR>
292 c = a.fix
293 </BLOCKQUOTE>
294 <LI><B>frac</B></LI><BLOCKQUOTE>
295 a ‚Ì�®�”•”•ª‚Ì�Ø‚èŽÌ‚Ä�B<BR>
296 c = a.frac
297 </BLOCKQUOTE>
299 <LI><B>floor[(n)]</B></LI><BLOCKQUOTE>
300 c = a.floor<BR>
301 a ˆÈ‰º‚Ì�Å‘å�®�”�iBigDecimal ’l�j‚ð•Ô‚µ‚Ü‚·�B
302 <CODE><PRE>
303 c = BigDecimal("1.23456").floor # ==> 1
304 c = BigDecimal("-1.23456").floor # ==> -2
305 </PRE></CODE>
306 ˆÈ‰º‚̂悤‚Ɉø�” n ‚ð—^‚¦‚邱‚Æ‚à‚Å‚«‚Ü‚·�B<BR>
307 n>=0 ‚È‚ç�A�¬�”“_ˆÈ‰º n+1 ˆÊ‚Ì�”Žš‚ð‘€�삵‚Ü‚·(�­�”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B<BR>
308 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ð‘€�삵‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�­‚È‚­‚Æ‚à n ŒÂ‚Ì 0 ‚ª•À‚Ñ‚Ü‚·)�B<BR>
309 <CODE><PRE>
310 c = BigDecimal("1.23456").floor(4) # ==> 1.2345
311 c = BigDecimal("15.23456").floor(-1) # ==> 10.0
312 </PRE></CODE>
314 </BLOCKQUOTE>
315 <LI><B>ceil[(n)]</B></LI><BLOCKQUOTE>
316 c = a.ceil<BR>
317 a ˆÈ�ã‚Ì�®�”‚Ì‚¤‚¿�A�Å‚à�¬‚³‚¢�®�”‚ðŒvŽZ‚µ�A‚»‚Ì’l�iBigDecimal ’l�j‚ð•Ô‚µ‚Ü‚·�B
318 <CODE><PRE>
319 c = BigDecimal("1.23456").ceil # ==> 2
320 c = BigDecimal("-1.23456").ceil # ==> -1
321 </PRE></CODE>
323 ˆÈ‰º‚̂悤‚Ɉø�”‚ð—^‚¦‚Ä�A�¬�”“_ˆÈ‰º n+1 ˆÊ‚Ì�”Žš‚ð‘€�ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B<BR>
324 n>=0 ‚È‚ç�A�¬�”“_ˆÈ‰º n+1 ˆÊ‚Ì�”Žš‚ð‘€�삵‚Ü‚·(�­�”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B<BR>
325 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ð‚ð‘€�삵‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�­‚È‚­‚Æ‚à n ŒÂ‚Ì 0 ‚ª•À‚Ñ‚Ü‚·)�B<BR>
326 <CODE><PRE>
327 c = BigDecimal("1.23456").ceil(4) # ==> 1.2346
328 c = BigDecimal("15.23456").ceil(-1) # ==> 20.0
329 </PRE></CODE>
331 </BLOCKQUOTE>
332 <LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE>
333 c = a.round<BR>
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>
339 <CODE><PRE>
340 c = BigDecimal("1.23456").round # ==> 1
341 c = BigDecimal("-1.23456").round # ==> -1
342 </PRE></CODE>
344 ˆÈ‰º‚̂悤‚Ɉø�”‚ð—^‚¦‚Ä�A�¬�”“_ˆÈ‰º n+1 ˆÊ‚Ì�”Žš‚ð‘€�ì‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B<BR>
345 n ‚ª�³‚ÌŽž‚Í�A�¬�”“_ˆÈ‰º n+1 ˆÊ‚Ì�”Žš‚ðŠÛ‚ß‚Ü‚·(�­�”“_ˆÈ‰º‚ð�A�Å‘å n Œ…‚É‚µ‚Ü‚·)�B<BR>
346 n ‚ª•‰‚Ì‚Æ‚«‚Í�¬�”“_ˆÈ�ã n Œ…–Ú‚ðŠÛ‚ß‚Ü‚·(�¬�”“_ˆÊ’u‚©‚ç�¶‚É�­‚È‚­‚Æ‚à n ŒÂ‚Ì 0 ‚ª•À‚Ñ‚Ü‚·)�B
347 <CODE><PRE>
348 c = BigDecimal("1.23456").round(4) # ==> 1.2346
349 c = BigDecimal("15.23456").round(-1) # ==> 20.0
350 </PRE></CODE>
351 ‚Q”Ԗڂ̈ø�”‚ðŽw’è‚·‚é‚Æ�ABigDecimal#mode ‚ÌŽw’è‚𖳎‹‚µ‚Ä�AŽw’肳‚ꂽ•û–@‚Å
352 ŠÛ‚ß‘€�ì‚ðŽÀ�s‚µ‚Ü‚·�B
353 <CODE><PRE>
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
356 </PRE></CODE>
358 </BLOCKQUOTE>
359 <LI><B>truncate</B></LI><BLOCKQUOTE>
360 c = a.truncate<BR>
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>
365 <CODE><PRE>
366 c = BigDecimal("1.23456").truncate(4) # ==> 1.2345
367 c = BigDecimal("15.23456").truncate(-1) # ==> 10.0
368 </PRE></CODE>
369 </BLOCKQUOTE>
371 </BLOCKQUOTE>
372 <LI><B>abs</B></LI><BLOCKQUOTE>
373 ‚�‚Ì�â‘Î’l<BR>
374 c = a.abs<BR>
376 </BLOCKQUOTE>
377 <LI><B>to_i</B></LI><BLOCKQUOTE>
378 �­�”“_ˆÈ‰º‚ð�Ø‚èŽÌ‚Ä‚Ä�®�”‚É•ÏŠ·‚µ‚Ü‚·�B<BR>
379 i = a.to_i<BR>
380 i ‚Í’l‚ɉž‚¶‚Ä Fixnum ‚© Bignum ‚É‚È‚è‚Ü‚·�B
381 a ‚ª Infinity ‚â NaN ‚Ì‚Æ‚«�Ai ‚Í nil ‚É‚È‚è‚Ü‚·�B
382 </BLOCKQUOTE>
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‚µ‚Ä
386 ‚­‚¾‚³‚¢�B
387 </BLOCKQUOTE>
388 <LI><B>to_s[(n)]</B></LI><BLOCKQUOTE>
389 •¶Žš—ñ‚É•ÏŠ·‚µ‚Ü‚·(ƒfƒtƒHƒ‹ƒg‚Í "0.xxxxxEn" ‚ÌŒ`‚É‚È‚è‚Ü‚·�j�B
390 <CODE><PRE>
391 BigDecimal("1.23456").to_s # ==> "0.123456E1"
392 </PRE></CODE>
393 ˆø�” n ‚É�³‚Ì�®�”‚ªŽw’肳‚ꂽ‚Æ‚«‚Í�A�­�”“_‚Å•ª‚¯‚ç‚ê‚é�¶‰E•”•ª‚ð�A‚»‚ꂼ‚ê n Œ…–ˆ
394 ‚É‹ó”’‚Å‹æ�Ø‚è‚Ü‚·�B
395 <CODE><PRE>
396 BigDecimal("0.1234567890123456789").to_s(10) # ==> "0.1234567890 123456789E0"
397 </PRE></CODE>
398 ˆø�” n ‚É�³‚Ì�®�”‚ð•\‚·•¶Žš—ñ‚ðŽw’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·�B
399 <CODE><PRE>
400 BigDecimal("0.1234567890123456789").to_s("10") # ==> "0.1234567890 123456789E0"
401 </PRE></CODE>
402 •¶Žš—ñ‚Ì�Å�‰‚É '+'�i‚Ü‚½‚Í ' '�j‚ð•t‚¯‚é‚Æ�A’l‚ª�³‚Ì�ê�‡�A�擪‚É '+'�i‚Ü‚½‚Í ' '�j‚ª•t‚«‚Ü‚·
403 �i•‰‚Ì�ê�‡‚Í�A�í‚É '-' ‚ª•t‚«‚Ü‚·�B�j�B
404 <CODE><PRE>
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"
408 </PRE></CODE>
410 ‚³‚ç‚É•¶Žš—ñ‚Ì�ÅŒã‚É E(‚Ü‚½‚Í e) ‚© F(‚Ü‚½‚Í f) ‚ðŽw’è‚·‚邱‚Æ‚Å�AˆÈ‰º‚̂悤‚É
411 •\Ž¦Œ`Ž®‚ð•Ï�X‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
412 <CODE><PRE>
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"
417 </PRE></CODE>
419 </BLOCKQUOTE>
420 <LI><B>exponent</B></LI><BLOCKQUOTE>
421 Žw�”•”‚ð�®�”’l‚Å•Ô‚µ‚Ü‚·�B
422 n = a.exponent <BR>
423 ‚Í a ‚Ì’l‚ª 0.xxxxxxx*10**n ‚ðˆÓ–¡‚µ‚Ü‚·�B
424 </BLOCKQUOTE>
426 <LI><B>precs</B></LI><BLOCKQUOTE>
427 n,m = a.precs<BR>
428 a ‚Ì—LŒø�”Žš (n) ‚Æ�Å‘å—LŒø�”Žš (m) ‚Ì”z—ñ‚ð•Ô‚µ‚Ü‚·�B
430 </BLOCKQUOTE>
432 <LI><B>sign</B></LI><BLOCKQUOTE>
433 ’l‚ª�³(sign &gt; 0)�A•‰(sign &lt; 0)�A‚»‚Ì‘¼(sigh==0)‚Å‚ ‚é‚©‚Ì�î•ñ‚ð•Ô‚µ‚Ü‚·�B
434 n = a.sign <BR>
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>
445 </BLOCKQUOTE>
446 <LI><B>nan?</B></LI><BLOCKQUOTE>
447 a.nan? ‚Í a ‚ªNaN‚Ì‚Æ‚«�^‚ð•Ô‚µ‚Ü‚·�B
448 </BLOCKQUOTE>
449 <LI><B>infinite?</B></LI><BLOCKQUOTE>
450 a.infinite? ‚Í a ‚ª+�‡‚Ì‚Æ‚« 1 �A-�‡‚Ì‚Æ‚«‚Í -1�A‚»‚êˆÈŠO‚Ì‚Æ‚«‚Í nil ‚ð•Ô‚µ‚Ü‚·�B
451 </BLOCKQUOTE>
452 <LI><B>finite?</B></LI><BLOCKQUOTE>
453 a.finite? ‚Í a ‚ª�‡‚Ü‚½‚Í NaN ‚Å‚È‚¢‚Æ‚«�^‚ð•Ô‚µ‚Ü‚·�B
454 </BLOCKQUOTE>
456 <LI><B>zero?</B></LI><BLOCKQUOTE>
457 a ‚ª 0 ‚È‚ç true ‚É‚È‚è‚Ü‚·�B<BR>
458 c = a.zero?
459 </BLOCKQUOTE>
460 <LI><B>nonzero?</B></LI><BLOCKQUOTE>
461 a ‚ª 0 ‚È‚ç nil�A0 ˆÈŠO‚È‚ç a ‚»‚Ì‚à‚Ì‚ª•Ô‚è‚Ü‚·�B<BR>
462 c = a.nonzero?
464 </BLOCKQUOTE>
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—ñ‚Å
469 •Ô‚µ‚Ü‚·�B<BR>
470 a=BigDecimal::new("3.14159265")<BR>
471 f,x,y,z = a.split<BR>
472 ‚Æ‚·‚é‚Æ�Af=+1Ax="314159265"�Ay=10�Az=1‚É‚È‚è‚Ü‚·�B<BR>
473 �]‚Á‚Ä�A<BR>
474 s = "0."+x<BR>
475 b = f*(s.to_f)*(y**z)<BR>
476 ‚Å Float ‚É•ÏŠ·‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
477 </BLOCKQUOTE>
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
485 </BLOCKQUOTE>
486 <LI><B>**</B></LI><BLOCKQUOTE>
487 a ‚Ì n �æ‚ðŒvŽZ‚µ‚Ü‚·�B‚Ž‚Í�®�”�B<BR>
488 c = a ** n<BR>
489 Œ‹‰Ê‚Æ‚µ‚Ä c ‚Ì—LŒøŒ…‚Í a ‚Ì n ”{ˆÈ�ã‚É‚È‚é‚Ì‚Å’�ˆÓ�B
490 </BLOCKQUOTE>
491 <LI><B>power</B></LI><BLOCKQUOTE>
492 ** ‚Æ“¯‚¶‚Å�Aa ‚Ì n �æ‚ðŒvŽZ‚µ‚Ü‚·�B‚Ž‚Í�®�”�B<BR>
493 c = a.power(n)<BR>
494 Œ‹‰Ê‚Æ‚µ‚Ä c ‚Ì—LŒøŒ…‚Í a ‚Ì n ”{ˆÈ�ã‚É‚È‚é‚Ì‚Å’�ˆÓ�B
495 </BLOCKQUOTE>
496 <LI><B>sqrt</B></LI><BLOCKQUOTE>
497 a‚Ì—LŒøŒ… n Œ…‚Ì•½•û�ª�in ‚Ì•½•û�ª‚Å‚Í‚ ‚è‚Ü‚¹‚ñ�j‚ð
498 ƒjƒ…�[ƒgƒ“–@‚ÅŒvŽZ‚µ‚Ü‚·�B<BR>
499 c = a.sqrt(n)<BR>
500 </BLOCKQUOTE>
502 <LI><B>divmod,quo,modulo,%,remainder</B></LI><BLOCKQUOTE>
503 �Ú�ׂ͑Ήž‚·‚é Float ‚ÌŠeƒ�ƒ\ƒbƒh‚ðŽQ�Æ‚µ‚ĉº‚³‚¢�B
504 </BLOCKQUOTE>
506 <LI><B>&lt=&gt</B></LI><BLOCKQUOTE>
507 a==b ‚È‚ç 0�Aa &gt b ‚È‚ç 1�Aa &lt b ‚È‚ç -1 ‚É‚È‚è‚Ü‚·�B<BR>
508 c = a &lt=&gt b
509 </BLOCKQUOTE>
510 </UL>
511 Œã‚Í�A“Ç‚ñ‚ÅŽš‚Ì”@‚­‚Å‚·�B<BR>
512 <UL>
513 <LI><B>==</B></LI>
514 <LI><B>===</B></LI>
515 �u==�v‚Æ“¯‚¶‚Å‚·‚ª case •¶‚ÅŽg—p‚³‚ê‚Ü‚·�B
516 <LI><B>!=</B></LI>
517 <LI><B>&lt</B></LI>
518 <LI><B>&lt=</B></LI>
519 <LI><B>&gt</B></LI>
520 <LI><B>&gt=</B></LI>
521 </UL>
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‚¯‚Î
527 ‰‰ŽZ‚͉”\‚Å‚·�B<BR>
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
534 ‚ƈµ‚í‚ê‚Ü‚·�B<BR>
535 <CODE><PRE>
536 a = BigDecimal.E(20)
537 c = a * "0.123456789123456789123456789" # •¶Žš‚ð BigDecimal ‚É•ÏŠ·‚µ‚Ä‚©‚çŒvŽZ
538 </PRE></CODE>
539 –³ŒÀ‘å‚â”ñ�”‚ð•\‚·•¶Žš‚Æ‚µ‚Ä�A"Infinity"�A"+Infinity"�A"-Infinity"�A"NaN"
540 ‚àŽg—p‚Å‚«‚Ü‚·(‘啶Žš�E�¬•¶Žš‚ð‹æ•Ê‚µ‚Ü‚·)�B‚½‚¾‚µ�Amode ƒ�ƒ\ƒbƒh‚Å false ‚ð
541 Žw’肵‚½�ê�‡‚Í—áŠO‚ª”­�¶‚µ‚Ü‚·�B
542 <BR>
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>
546 <CODE><PRE>
547 a = BigDecimal.E(20)
548 c = "0.123456789123456789123456789" * a # ƒGƒ‰�[
549 </PRE></CODE>
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
554 <hr>
555 <A NAME="#UNDEF">
556 <H2>–³ŒÀ�A”ñ�”�Aƒ[ƒ�‚̈µ‚¢</H2>
557 �u–³ŒÀ�v‚Æ‚Í•\Œ»‚Å‚«‚È‚¢‚­‚ç‚¢‘å‚«‚È�”‚Å‚·�B“Á•Ê‚Ɉµ‚¤‚½‚ß‚É
558 +Infinity�i�³‚Ì–³ŒÀ‘å�j‚â -Infinity�i•‰‚Ì–³ŒÀ‘å�j‚Æ‚¢‚¤
559 ‚悤‚É•\‹L‚³‚ê‚Ü‚·�B
560 –³ŒÀ‚Í 1.0/0.0 ‚̂悤‚Ƀ[ƒ�‚ÅŠ„‚é‚悤‚ÈŒvŽZ‚ð‚µ‚½‚Æ‚«‚É�¶�¬‚³‚ê‚Ü‚·�B
561 <BR><BR>
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‚Ç‚ñ‚È�”
565 ‚Æ‚àˆê’v‚µ‚Ü‚¹‚ñ�B
566 <BR><BR>
567 ƒ[ƒ�‚Í +0.0 ‚Æ -0.0 ‚ª‘¶�Ý‚µ‚Ü‚·�B‚½‚¾‚µ�A+0.0==-0.0 ‚Í true ‚Å‚·�B
568 <BR><BR>
569 Infinity�ANaN�A +0.0 ‚Æ -0.0 “™‚ðŠÜ‚ñ‚¾ŒvŽZŒ‹‰Ê‚Í‘g‚Ý�‡‚킹‚É
570 ‚æ‚è•¡ŽG‚Å‚·�B‹»–¡‚Ì‚ ‚é�l‚Í�AˆÈ‰º‚̃vƒ�ƒOƒ‰ƒ€‚ðŽÀ�s‚µ‚ÄŒ‹‰Ê‚ð
571 Šm”F‚µ‚Ä‚­‚¾‚³‚¢�iŒ‹‰Ê‚ɂ‚¢‚Ä�A‹^–â‚âŠÔˆá‚¢‚ð”­Œ©‚³‚ꂽ•û‚Í
572 ‚¨’m‚点Šè‚¢‚Ü‚·�j�B
574 <PRE>
575 <CODE>
576 require "bigdecimal"
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(+ - * / <=> > >= < == != <=)
582 for a in aa
583 for b in ba
584 for op in opa
585 x = BigDecimal::new(a)
586 y = BigDecimal::new(b)
587 eval("ans= x #{op} y;print a,' ',op,' ',b,' ==> ',ans.to_s,\"\n\"")
591 </CODE>
592 </PRE>
594 <hr>
595 <A NAME="#STRUCT">
596 <H2>“à•”�\‘¢</H2>
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
611 <BR>
612 <CODE><PRE>
613 typedef struct {
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
617 // ==0 : NaN
618 // 1 : +0
619 // -1 : -0
620 // 2 : �³‚Ì’l
621 // -2 : •‰‚Ì’l
622 // 3 : +Infinity
623 // -3 : -Infinity
624 unsigned short flag; // ŠeŽí‚Ì�§Œäƒtƒ‰ƒbƒO
625 int exponent; // Žw�”•”‚Ì’l(‰¼�”•”*BASE**exponent)
626 unsigned long frac[1]; // ‰¼�”•”‚Ì”z—ñ(‰Â•Ï)
627 } Real;
628 </CODE></PRE>
629 —Ⴆ‚Î 1234.56784321 ‚Æ‚¢‚¤�”Žš‚Í(BASE=10000‚È‚ç)<BR>
630 <PRE>
631 0.1234 5678 4321*(10000)**1
632 </PRE>
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
638 <hr>
639 <A NAME="#BASE">
640 <H2>2�i‚Æ10�i</H2>
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>
646 <DL>
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
655 <CODE><PRE>
656 file = File::open(....,"r")
657 s = BigDecimal::new("0")
658 while line = file.gets
659 s = s + line
661 </PRE></CODE>
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
675 </DL>
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
694 <hr>
695 <A NAME="#PREC">
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‚ð
704 Ž�‚‚悤‚É‚È‚è‚Ü‚·�B
705 <BR><BR>
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
714 <BR><BR>
715 ’�ˆÓ�F�u+,-,*,/�v‚Å‚ÍŒ‹‰Ê‚Ì�¸“x�i—LŒøŒ…�”�j‚ðŽ©•ª‚ÅŽw’è‚Å‚«‚Ü‚¹‚ñ�B
716 �¸“x‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡‚Í�AˆÈ‰º‚̃Cƒ“ƒXƒ^ƒ“ƒXƒ�ƒ\ƒbƒh‚ðŽg—p‚µ‚Ü‚·�B<BR>
717 <UL>
718 <LI>add,sub,mult,div</LI><BLOCKQUOTE>
719 ‚±‚ê‚ç‚̃�ƒ\ƒbƒh‚Í�擪(�Å�¶)‚Ì�”Žš‚©‚ç‚ÌŒ…�”‚ðŽw’è‚Å‚«‚Ü‚·�B
720 <CODE><PRE>
721 BigDecimal("2").div(3,12) # 2.0/3.0 => 0.6666666666 67E0
722 </PRE></CODE>
723 </BLOCKQUOTE>
724 <LI>truncate,round,ceil,floor</LI><BLOCKQUOTE>
725 ‚±‚ê‚ç‚̃�ƒ\ƒbƒh‚Í�¬�”“_‚©‚ç‚Ì‘Š‘Έʒu‚ðŽw’肵‚ÄŒ…�”‚ðŒˆ’è‚µ‚Ü‚·�B
726 <CODE><PRE>
727 BigDecimal("6.66666666666666").round(12) # => 0.6666666666 667E1
728 </PRE></CODE>
729 </BLOCKQUOTE>
730 </UL>
731 <H3>Ž©•ª‚Å�¸“x‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡</H3>
732 Ž©•ª‚Å�¸“x(—LŒøŒ…�”)‚ðƒRƒ“ƒgƒ��[ƒ‹‚µ‚½‚¢�ê�‡‚Í add�Asub�Amult�Adiv “™‚̃�ƒ\ƒbƒh
733 ‚ªŽg—p‚Å‚«‚Ü‚·�B
734 ˆÈ‰º‚̉~Žü—¦‚ðŒvŽZ‚·‚éƒvƒ�ƒOƒ‰ƒ€—á‚̂悤‚É�A
735 ‹�‚߂錅�”‚ÍŽ©•ª‚ÅŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B
736 <BR><BR>
737 <CODE><PRE>
738 #!/usr/local/bin/ruby
740 require "bigdecimal"
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
746 exp = -sig
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)
757 t = t*m25
758 u = t.div(k,sig)
759 pi = pi + u
760 k = k+two
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)
769 u = t.div(k,sig)
770 pi = pi + u
771 k = k+two
776 if $0 == __FILE__
777 if ARGV.size == 1
778 print "PI("+ARGV[0]+"):\n"
779 p big_pi(ARGV[0].to_i)
780 else
781 print "TRY: ruby pi.rb 1000 \n"
785 </PRE></CODE>
786 <HR>
787 <FONT size=2>
789 <A HREF="http://www.tinyforest.gr.jp">
790 �¬—Ñ –ΗY
791 </A>
792 (E-Mail:<A HREF="mailto:shigeo@tinyforest.gr.jp">&ltshigeo@tinyforest.gr.jp&gt</U></A>)
793 </I>
794 </FONT>
795 </TD>
796 </TR>
797 </TABLE>
798 </BODY>
799 </HTML>