ext/bigdecimal/bigdecimal_en.html: Remove obsolete information, fix typos

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
marcandre 2009-12-06 22:35:45 +00:00
Родитель c121f78b9a
Коммит 553b55f6e6
1 изменённых файлов: 24 добавлений и 28 удалений

Просмотреть файл

@ -1,4 +1,3 @@
<!-- saved from url=(0022)http://internet.e-mail -->
<HTML> <HTML>
<HEAD> <HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html">
@ -43,7 +42,7 @@ For the details about Ruby see:<BR>
NOTE:<BR> NOTE:<BR>
This software is provided "AS IS" and without any express or This software is provided "AS IS" and without any express or
implied warranties,including,without limitation,the implied implied warranties,including,without limitation,the implied
warranties of merchantibility and fitness for a particular warranties of merchantability and fitness for a particular
purpose. For the details,see COPYING and README included in this purpose. For the details,see COPYING and README included in this
distribution. distribution.
<BR> <BR>
@ -115,7 +114,7 @@ s: Initial value string. Spaces will be ignored. Any unrecognizable character fo
representing initial value terminates the string.<BR> representing initial value terminates the string.<BR>
n: Maximum number of significant digits of a. n must be a Fixnum object. n: Maximum number of significant digits of a. n must be a Fixnum object.
If n is omitted or is equal to 0,then the maximum number of significant digits of a is determined from the length of s. If n is omitted or is equal to 0,then the maximum number of significant digits of a is determined from the length of s.
Actual number of digits handled in computations are usually gretaer than n.<BR> Actual number of digits handled in computations are usually greater than n.<BR>
n is useful when performing divisions like n is useful when performing divisions like
<CODE><PRE> <CODE><PRE>
BigDecimal("1") / BigDecimal("3") # => 0.3333333333 33E0 BigDecimal("1") / BigDecimal("3") # => 0.3333333333 33E0
@ -141,11 +140,11 @@ f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag)<BR>
f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)<BR> f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)<BR>
</BLOCKQUOTE> </BLOCKQUOTE>
EXCEPTION_NaN controls the execution when computation results to NaN.<BR> EXCEPTION_NaN controls the execution when computation results to NaN.<BR>
EXCEPTION_INFINITY controls the execution when computation results to Infinity(<28>}Infinity).<BR> EXCEPTION_INFINITY controls the execution when computation results to Infinity.<BR>
EXCEPTION_UNDERFLOW controls the execution when computation underflows.<BR> EXCEPTION_UNDERFLOW controls the execution when computation underflows.<BR>
EXCEPTION_OVERFLOW controls the execution when computation overflows.<BR> EXCEPTION_OVERFLOW controls the execution when computation overflows.<BR>
EXCEPTION_ZERODIVIDE controls the execution when zero-division occures.<BR> EXCEPTION_ZERODIVIDE controls the execution when zero-division occurs.<BR>
EXCEPTION_ALL controls the execution for any exception defined occures.<BR> EXCEPTION_ALL controls the execution when any defined exception occurs.<BR>
If the flag is true,then the relating exception is thrown.<BR> If the flag is true,then the relating exception is thrown.<BR>
No exception is thrown when the flag is false(default) and computation No exception is thrown when the flag is false(default) and computation
continues with the result:<BR> continues with the result:<BR>
@ -181,7 +180,7 @@ where flag must be one of:
</TABLE> </TABLE>
New rounding mode is returned. If nil is specified for the second argument,then current setting is returned.<BR> New rounding mode is returned. If nil is specified for the second argument,then current setting is returned.<BR>
The digit location for rounding operation can not be specified by this mode method, The digit location for rounding operation can not be specified by this mode method,
use truncate/round/ceil/floor/add/sub/mult/div mthods for each instance instead. use truncate/round/ceil/floor/add/sub/mult/div methods for each instance instead.
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>limit[(n)]</B></LI><BLOCKQUOTE> <LI><B>limit[(n)]</B></LI><BLOCKQUOTE>
@ -321,7 +320,7 @@ If n<0,then the n-th digit counted from the decimal point in integer part is pro
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE> <LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE>
c = a.round<BR> c = a.round<BR>
round a to the nearest 1(default)<EFBFBD>D<BR> round a to the nearest 1(default)ÅD<BR>
<CODE><PRE> <CODE><PRE>
c = BigDecimal("1.23456").round # ==> 1 c = BigDecimal("1.23456").round # ==> 1
c = BigDecimal("-1.23456").round # ==> -1 c = BigDecimal("-1.23456").round # ==> -1
@ -346,7 +345,7 @@ c = BigDecimal::new("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.2
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>truncate[(n)]</B></LI><BLOCKQUOTE> <LI><B>truncate[(n)]</B></LI><BLOCKQUOTE>
c = a.truncate<BR> c = a.truncate<BR>
truncate a to the nearest 1<EFBFBD>D<BR> truncate a to the nearest 1ÅD<BR>
As shown in the following example,an optional integer argument (n) specifying the position As shown in the following example,an optional integer argument (n) specifying the position
of the target digit can be given.<BR> of the target digit can be given.<BR>
If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR> If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
@ -409,7 +408,7 @@ means a = 0.xxxxxxx*10**n.
<LI><B>precs</B></LI><BLOCKQUOTE> <LI><B>precs</B></LI><BLOCKQUOTE>
n,m = a.precs <BR> n,m = a.precs <BR>
prec returns number of significant digits (n) and maximum number of precs returns number of significant digits (n) and maximum number of
significant digits (m) of a. significant digits (m) of a.
</BLOCKQUOTE> </BLOCKQUOTE>
@ -439,11 +438,11 @@ a.nan? returns True when a is NaN.
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>infinite?</B></LI><BLOCKQUOTE> <LI><B>infinite?</B></LI><BLOCKQUOTE>
a.infinite? returns 1 when a is +<2B>‡,-1 when a is -<2D>, nil otherwise. a.infinite? returns 1 when a is Infinity, -1 when a is -Infinity, nil otherwise.
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>finite?</B></LI><BLOCKQUOTE> <LI><B>finite?</B></LI><BLOCKQUOTE>
a.finite? returns true when a is neither <EFBFBD> nor NaN. a.finite? returns true when a is neither Infinity nor NaN.
</BLOCKQUOTE> </BLOCKQUOTE>
<LI><B>zero?</B></LI><BLOCKQUOTE> <LI><B>zero?</B></LI><BLOCKQUOTE>
@ -526,9 +525,9 @@ same as ==,used in case statement.
<DT> 1.Both A and B are BigDecimal objects</DT> <DT> 1.Both A and B are BigDecimal objects</DT>
<DD> A op B is normally performed.</DD> <DD> A op B is normally performed.</DD>
<DT> 2.A is the BigDecimal object but B is other than BigDecimal object</DT> <DT> 2.A is the BigDecimal object but B is other than BigDecimal object</DT>
<DD> Operation is performed,after B is translated to correcponding BigDecimal object(because BigDecimal supports coerce method).</DD> <DD> Operation is performed,after B is translated to corresponding BigDecimal object(because BigDecimal supports coerce method).</DD>
<DT> 3.A is not the BigDecimal object but B is BigDecimal object</DT> <DT> 3.A is not the BigDecimal object but B is BigDecimal object</DT>
<DD>If A has coerce mthod,then B will translate A to corresponding <DD>If A has coerce method,then B will translate A to corresponding
BigDecimal object and the operation is performed,otherwise an error occures.</DD> BigDecimal object and the operation is performed,otherwise an error occures.</DD>
</DL> </DL>
@ -573,7 +572,7 @@ Zero has two different variations as +0.0 and -0.0.
But,still, +0.0==-0.0 is true. But,still, +0.0==-0.0 is true.
<BR><BR> <BR><BR>
Computation results including Infinity,NaN,+0.0 or -0.0 become complicated. Computation results including Infinity,NaN,+0.0 or -0.0 become complicated.
Run following program and comfirm the results. Run following program and confirm the results.
Send me any incorrect result if you find. Send me any incorrect result if you find.
<CODE><PRE> <CODE><PRE>
@ -604,11 +603,8 @@ BASE is base value(=10000 in 32 bit integer system),
and n is the exponent value.<BR> and n is the exponent value.<BR>
Larger BASE value enables smaller size of the array frac[],and increases computation speed. Larger BASE value enables smaller size of the array frac[],and increases computation speed.
The value of BASE is defined ind VpInit(). In 32 bit integer system, this value is The value of BASE is defined ind VpInit(). In 32 bit integer system, this value is
10000. In 64 bit integer system,the value becomes larger. 10000. In 64 bit integer system, the value is 1000000000.
BigDecimal has not yet been compiled and tested on 64 bit integer system. When BASE is 10000,an element of the array frac[] can have value of from 0 to 9999.
It will be very nice if anyone try to run BigDecimal on 64 bit system and
inform me the results.
When BASE is 10000,an element of the array frac[] can have vale of from 0 to 9999.
(up to 4 digits).<BR> (up to 4 digits).<BR>
The structure Real is defined in bigdecimal.h as:<BR> The structure Real is defined in bigdecimal.h as:<BR>
<CODE><PRE> <CODE><PRE>
@ -626,7 +622,7 @@ The structure Real is defined in bigdecimal.h as:<BR>
/* -3 : -Infinity */ /* -3 : -Infinity */
unsigned short flag; /* Control flag */ unsigned short flag; /* Control flag */
int exponent; /* Exponent value(0.xxxx*BASE**exponent) */ int exponent; /* Exponent value(0.xxxx*BASE**exponent) */
unsigned long frac[1]; /* An araay holding mantissa(Variable) */ unsigned long frac[1]; /* An array holding mantissa(Variable) */
} Real; } Real;
</CODE></PRE> </CODE></PRE>
The decimal value 1234.56784321 is represented as(BASE=10000):<BR> The decimal value 1234.56784321 is represented as(BASE=10000):<BR>
@ -668,7 +664,7 @@ For example, 0.1 can not exactly be represented in binary.<BR>
where b1=0,b2=0,b3=0,b4=1...<BR> where b1=0,b2=0,b3=0,b4=1...<BR>
bn(n=1,2,3,...) is infinite series of digit with value of 0 or 1, bn(n=1,2,3,...) is infinite series of digit with value of 0 or 1,
and rounding operation is necessary but where we should round the series ? and rounding operation is necessary but where we should round the series ?
Of cource,exact "0.1" is printed if the rouding operation is properly done, Of course, exact "0.1" is printed if the rounding operation is properly done,
<DT>Significant digit we can have is automatically determined <DT>Significant digit we can have is automatically determined
<DD>In binary representation,0.1 can not be represented in finite series of digit. <DD>In binary representation,0.1 can not be represented in finite series of digit.
@ -678,12 +674,12 @@ structure.
</DL> </DL>
<H3>Disadvantage of decimal representation</H3> <H3>Disadvantage of decimal representation</H3>
Because most computers have no internal decimal representaion. Because most computers have no internal decimal representation.
Once you use BigDecimal,you need to keep using it without Once you use BigDecimal,you need to keep using it without
considering computation cost if exact computation is required. considering computation cost if exact computation is required.
<H4>Which is the first input?</H4> <H4>Which is the first input?</H4>
Because most people uses decimal notatin for numeric data representation, Because most people uses decimal notation for numeric data representation,
BigDecimal can handle numeric data without loss of translation error. BigDecimal can handle numeric data without loss of translation error.
<hr> <hr>
@ -701,11 +697,11 @@ significant digits of both side of the operator. For / ,resulting number of sign
maximum significant digits of both side of the operator.<BR> maximum significant digits of both side of the operator.<BR>
1.2 For + and -,resulting number of significant digits is determined so that 1.2 For + and -,resulting number of significant digits is determined so that
no round operation is needed. <br> no round operation is needed. <br>
For example, c has more than 100 siginificant digits if c is computed as:<BR> For example, c has more than 100 significant digits if c is computed as:<BR>
c = 0.1+0.1*10**(-100)<br> c = 0.1+0.1*10**(-100)<br>
<BR> <BR>
As +,-,and * are always exact(no round operation is performed unless BigDecimal.limit is specified), As +,-,and * are always exact(no round operation is performed unless BigDecimal.limit is specified),
which means more momories are required to keep computation results. which means more memory is required to keep computation results.
But,the division such as c=1.0/3.0 will always be rounded.<BR> But,the division such as c=1.0/3.0 will always be rounded.<BR>
<H3>2. add,sub,mult,div</H3> <H3>2. add,sub,mult,div</H3>
@ -729,7 +725,7 @@ decimal point.
<H3>4. Example</H3> <H3>4. Example</H3>
Following example compute the ratio of the circumference of a circle to Following example compute the ratio of the circumference of a circle to
its dirmeter(pi=3.14159265358979....) using J.Machin's formula. its diameter(pi=3.14159265358979....) using J.Machin's formula.
<BR><BR> <BR><BR>
<CODE><PRE> <CODE><PRE>
#!/usr/local/bin/ruby #!/usr/local/bin/ruby