diff options
Diffstat (limited to 'ext/bigdecimal/bigdecimal_ja.html')
-rw-r--r-- | ext/bigdecimal/bigdecimal_ja.html | 706 |
1 files changed, 706 insertions, 0 deletions
diff --git a/ext/bigdecimal/bigdecimal_ja.html b/ext/bigdecimal/bigdecimal_ja.html new file mode 100644 index 0000000000..bfddabd3ba --- /dev/null +++ b/ext/bigdecimal/bigdecimal_ja.html @@ -0,0 +1,706 @@ +<HTML> +<HEAD> +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> +<style type="text/css"><!-- +body { + color: #3f0f0f; + background: #fefeff; + margin-left: 2em; margin-right: 2em; +} +h1 { + color: #ffffff; + background-color: #3939AD; + border-color: #FF00FF; + width: 100%; + border-style: solid; + border-top-width: 0.1em; + border-bottom-width: 0.1em; + border-right: none; + border-left: none; + padding: 0.1em; + font-weight: bold; + font-size: 160%; + text-align: center; +} +h2 { + color: #00007f; + background-color: #e7e7ff; + border-color: #000094; + width: 100%; + border-style: solid; + border-left: none; + border-right: none; + border-top-width: 0.1em; + border-bottom-width: 0.1em; + padding: 0.1em; + font-weight: bold; + font-size: 110%; +} +h3 { + color: #00007f; + padding: 0.2em; + font-size: 110%; +} +h4, h5 { + color: #000000; + padding: 0.2em; + font-size: 100%; +} +table { + margin-top: 0.2em; margin-bottom: 0.2em; + margin-left: 2em; margin-right: 2em; +} +caption { + color: #7f0000; + font-weight: bold; +} +th { + background: #e7e7ff; + padding-left: 0.2em; padding-right: 0.2em; +} +td { + background: #f3f7ff; + padding-left: 0.2em; padding-right: 0.2em; +} +code { + color: #0000df; +} +dt { + margin-top: 0.2em; +} +li { + margin-top: 0.2em; +} +pre +{ + BACKGROUND-COLOR: #d0d0d0; + BORDER-BOTTOM: medium none; + BORDER-LEFT: medium none; + BORDER-RIGHT: medium none; + BORDER-TOP: medium none; + LINE-HEIGHT: 100%; + MARGIN: 12px 12px 12px 12px; + PADDING-BOTTOM: 12px; + PADDING-LEFT: 12px; + PADDING-RIGHT: 12px; + PADDING-TOP: 12px; + WHITE-SPACE: pre; + WIDTH: 100% +} +--></style> + +<TITLE>BigDecimal:An extension library for Ruby</TITLE> +</HEAD> +<BODY BGCOLOR=#FFFFE0> +<H1>BigDecimal(�ϒ����������_���Z�p�g�����C�u����)</H1> +<DIV align="right"><A HREF="./bigdecimal_en.html">English</A></DIV><BR> +BigDecimal �̓I�u�W�F�N�g�w���̋��͂ȃX�N���v�g����ł��� Ruby �ɉϒ����������_ +�v�Z�@�\��lj����邽�߂̊g�����C�u�����ł��B +Ruby �ɂ��Ă̏ڂ������e�͈ȉ���URL���Q�Ƃ��Ă��������B +<UL> +<LI><A HREF="http://www.ruby-lang.org/ja/">http://www.ruby-lang.org/ja/</A>�FRuby�����y�[�W</LI> +<LI><A HREF="http://ruby.freak.ne.jp/">http://ruby.freak.ne.jp/</A>�FRuby�Ɋւ�����y�[�W</LI> +<LI><A HREF="http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/</A>�FRuby�Ɋւ���y�[�W��H��܂�</LI> +</UL> +<hr> +<H2>�ڎ�</H2> +<UL> +<LI><A HREF="#INTRO">�͂��߂�</LI> +<LI><A HREF="#SPEC">�g�p���@�ƃ��\�b�h�̈ꗗ</A></LI> +<LI><A HREF="#UNDEF">�����A�A�[���̈���</A></LI> +<LI><A HREF="#STRUCT">�����\��</A></LI> +<LI><A HREF="#BASE">2�i��10�i</A></LI> +<LI><A HREF="#PREC">�v�Z���x�ɂ���</A></LI> +</UL> + +<HR> +<A NAME="#INTRO"> +<H2>�͂��߂�</H2> +Ruby �ɂ� Bignum �Ƃ����N���X������A���S���̐����ł��v�Z���邱�Ƃ��ł��܂��B +�����A�C�ӌ��̕��������_���Z�p�N���X�������悤�ł��B�����ŁA +�C�ӌ��̕��������_���Z�p�g�����C�u���� BigDecimal ���쐬���܂����B +�s��⏕���E��Ă�����ꍇ�ǂ��ǂ��A +<A HREF="mailto:[email protected]">[email protected]</A> +�܂ł��m�点���������B�s����C�͑傢�ɂ���܂��B�����A���ԂȂǂ̊W�Ŗ� +�͂ł��܂���B�܂��A���ʂɂ��Ă��ۏł�����̂ł͂���܂���B +�\�߁A���������������B +<BR><BR> +���̃v���O�����́A���R�ɔz�z�E���ς��č\���܂���B�������A���쌠�͕������Ă��܂���B +�z�z�E���ϓ��̌����� Ruby �̂���ɏ����܂��B�ڂ����� README ��ǂ�ł��������B + +<hr> +<H2>�C���X�g�[���ɂ���</H2> +BigDecimal ���܂� Ruby �̍ŐV�ł�<A HREF="http://www.ruby-lang.org/ja/">Ruby�����y�[�W</A>����_�E�����[�h�ł��܂��B +�_�E�����[�h�����ŐV�ł��𓀂�����A�ʏ�̃C���X�g�[���菇�����s���ĉ������B +Ruby ���������C���X�g�[�������A������ BigDecimal �����p�ł���悤�ɂȂ�͂��ł��B +�\�[�X�t�@�C���� +bigdecimal.c,bigdecimal.h +�̂Q�݂̂ł��B<BR> + +<hr> +<A NAME="#SPEC"> +<H2>�g�p���@�ƃ��\�b�h�̈ꗗ</H2> +�uRuby�͊��ɏ�����v�Ƃ����O��ŁA<br><br> +<CODE> +<PRE> +require 'bigdecimal' +a=BigDecimal::new("0.123456789123456789") +b=BigDecimal::new("123456.78912345678",40) +c=a+b +</PRE> +</CODE> +<br> +�Ƃ����悤�Ȋ����Ŏg�p���܂��B + +<H3>���\�b�h�ꗗ</H3> +�ȉ��̂悤�ȃ��\�b�h�����p�\�ł��B<BR> +�L�q��ABigDecimal �I�u�W�F�N�g�� a,b,c,r�ŁAString�i������j�I�u�W�F�N�g�� + s�A������ n �ŕ\�L���܂��B�܂��A�u�L�������v�Ƃ� BigDecimal �����x��ۏ��� +�����ł��B�҂�����ł͂���܂���A��̗]�T�������Čv�Z����܂��B�܂��A +�Ⴆ�R�Q�r�b�g�̃V�X�e���ł͂P�O�i�łS�����Ɍv�Z���܂��B�]���āA����ł́A +�����́u�L�������v�͂S�̔{���ƂȂ��Ă��܂��B + +<UL> +<LI>new</LI><BR> +�V���� BigDecimal �I�u�W�F�N�g�����܂��B<BR> +a=BigDecimal::new(s[,n])<BR> +s �͏����l����Ŏw�肵�܂��D +n �͕K�v�ȗL�������ia �̍ő�L�������j�𐮐��Ŏw�肵�܂��B +n �� 0 �܂��͏ȗ����ꂽ�Ƃ��́An �̒l�� s �̗L�������Ƃ݂Ȃ���܂��B +s �̗L��������� n ���������Ƃ��� n=0 �̂Ƃ��Ɠ����ł��B +a �̍ő�L�������� n ����傢�l���̗p����܂��B +<LI>+</LI><BR> +���Z�ic = a + b�j<BR> +c �̐��x�ɂ��Ắu<A HREF="#PREC">�v�Z���x�ɂ���</A>�v���Q�Ƃ��Ă��������B +<LI>-</LI><BR> +���Z�ic = a - b�j�A�܂��͕������]�ic = -a�j<BR> +c �̐��x�ɂ��Ắu<A HREF="#PREC">�v�Z���x�ɂ���</A>�v���Q�Ƃ��Ă��������B +<LI>*</LI><BR> +��Z(c = a * b)<BR> +c�̐��x��(a�̐��x)+(b�̐��x)���x�ł��B<br> +�ڂ����́u<A HREF="#PREC">�v�Z���x�ɂ���</A>�v���Q�Ƃ��Ă��������B + +<LI>/</LI><BR> +���Z(c = a / b)<BR> +c �̐��x�ɂ��Ắu<A HREF="#PREC">�v�Z���x�ɂ���</A>�v���Q�Ƃ��Ă��������B + +<LI>assign</LI><BR> +�ȉ��̂悤�Ɏg�p���܂��B<BR> +c = a.assign(n,f)<BR> +f > 0 �Ȃ�Aa �� c �ɁA���̂܂ܑ�����܂��B +f < 0 �Ȃ�A-a �� c �ɑ�����܂��B +f �̐�Βl�i|f|�j�͂P���Q���w�肵�Ă��������B +|f|=2 �̂Ƃ��́Ac �̍ő吸�x�� a �̎����x��菬�����Ƃ��ɂ� +�ۂ߂��܂��B|f|=1 �̂Ƃ��͐�̂Ă��܂��B +n �� c �̗L�������ł��in ���ȏ�̐��x������ c ����������܂��j�B + +<LI>add</LI><BR> +�ȉ��̂悤�Ɏg�p���܂��B<BR> +c = a.add(b,n)<BR> +c = a + b ���ő�� n ���܂Ōv�Z���܂��B +a + b �̐��x�� n ���傫���Ƃ��͊ۂ߂��܂��B + +<LI>sub</LI><BR> +�ȉ��̂悤�Ɏg�p���܂��B<BR> +c = a.sub(b,n)<BR> +c = a - b ���ő�� n ���܂Ōv�Z���܂��B +a - b �̐��x�� n ���傫���Ƃ��͊ۂ߂��܂��B + +<LI>mult</LI><BR> +�ȉ��̂悤�Ɏg�p���܂��B<BR> +c = a.mult(b,n)<BR> +c = a * b ���ő�� n ���܂Ōv�Z���܂��B +a * b �̐��x�� n ���傫���Ƃ��͊ۂ߂��܂��B + +<LI>div</LI><BR> +�ȉ��̂悤�Ɏg�p���܂��B<BR> +c,r = a.div(b,n)<BR> +c=a/b �̌v�Z�����܂��B r �ɂ͏�]���������܂��Ba/b�� +�K�v�Ȃ�n ���܂Ōv�Z����܂��Bdivmod ���\�b�h +�ƈقȂ�Ac �͐����Ƃ͌���܂���B +�܂��A c �͊ۂ߂��邱�Ƃ͂���܂���B + a = c*b + r �̊W�͐������܂��B +<LI>%</LI><BR> +r = a%b <BR> +a/b �̗]����v�Z���܂��B�ȉ��̌v�Z�Ɠ������̂ł��B<BR> +r = a-((a/b).floor)*b<BR> +<LI>fix</LI><BR> +a �̏����_�ȉ��̐�̂āB<BR> +c = a.fix +<LI>frac</LI><BR> +a �̐��������̐�̂āB<BR> +c = a.frac +<LI>floor</LI><BR> +a �ȉ��̍ő吮����\���l�iBigDecimal �l�j��Ԃ��܂��B<BR> +c = a.floor<BR> +�ȉ��̂悤�Ɉ�����^���āA�����_�ȉ� n+1 �ʂ̐����𑀍삷�邱�Ƃ��ł��܂� +(�����_�ȉ����A�ő� n ���ɂ��܂�)�B<BR> +c = BigDecimal("1.23456")<BR> +d = c.floor(4) # d = 1.2345 �ɂȂ�܂��B<BR> + n �����̂Ƃ��͏����_�ȏ� n ���ڂ𑀍삵�܂��B<BR> +c = BigDecimal("15.23456")<BR> +d = c.floor(-1) # d = 10.0 �ɂȂ�܂��B<BR> + +<LI>ceil</LI><BR> +a �ȏ�̐����̂����A�ł��������������v�Z���A���̒l�iBigDecimal �l�j��Ԃ��܂��B<BR> +c = a.ceil<BR> +�ȉ��̂悤�Ɉ�����^���āA�����_�ȉ� n+1 �ʂ̐����𑀍삷�邱�Ƃ��ł��܂� +(�����_�ȉ����A�ő� n ���ɂ��܂�)�B<BR> +c = BigDecimal::new("1.23456")<BR> +d = c.ceil(4) # d = 1.2346 �ɂȂ�܂��B<BR> + n �����̂Ƃ��͏����_�ȏ� n ���ڂ��𑀍삵�܂��B<BR> +c = BigDecimal::new("15.23456")<BR> +d = c.ceil(-1) # d = 20.0 �ɂȂ�܂��B<BR> + +<LI>round</LI><BR> +�����_�ȉ����ʂ̐����l�̌ܓ����Đ����iBigDecimal �l�j�ɂ��܂��B<BR> +c = a.round<BR> +�ȉ��̂悤�Ɉ�����^���āA�����_�ȉ� n+1 �ʂ̐����𑀍삷�邱�Ƃ��ł��܂� +(�����_�ȉ����A�ő� n ���ɂ��܂�)�B<BR> +n �����̎��́A�����_�ȉ� n+1 �ʂ̐������l�̌ܓ����܂��B +c = BigDecimal::new("1.23456")<BR> +d = c.round(4) # d = 1.235 �ɂȂ�܂��B<BR> + n �����̂Ƃ��͏����_�ȏ� n ���ڂ��𑀍삵�܂��B<BR> +c = BigDecimal::new("15.23456")<BR> +d = c.round(-1) # d = 20.0 �ɂȂ�܂��B<BR> + +<LI>truncate</LI><BR> +�����_�ȉ��̐����̂ĂĐ����iBigDecimal �l�j�ɂ��܂��B<BR> +c = a.truncate<BR> +�ȉ��̂悤�Ɉ�����^���āA�����_�ȉ� n+1 �ʂ̐����𑀍삷�邱�Ƃ��ł��܂� +(�����_�ȉ����A�ő� n ���ɂ��܂�)�B<BR> +n �����̎��́A�����_�ȉ� n+1 �ʂ̐������̂Ă܂��B +c = BigDecimal::new("1.23456")<BR> +d = c.truncate(4) # d = 1.2345 �ɂȂ�܂��B<BR> + n �����̂Ƃ��͏����_�ȏ� n ���ڂ��𑀍삵�܂��B<BR> +c = BigDecimal::new("15.23456")<BR> +d = c.truncate(-1) # d = 10.0 �ɂȂ�܂��B<BR> + +<LI>divmod</LI><BR> +���Ə�]�̔z���Ԃ��܂��B<BR> +c,r = a.divmod(b) # a = c*b + r<BR> +divmod���\�b�h�� a = c * b + r �ƂȂ� a / b �̕��������_�^�̏� c �Ə�] r �� +�v�Z���܂��B������ c �͐����i���������̂Ȃ������j�ɂȂ�܂��B<BR> +c = (a/b).floor <BR> +r = a - c*b<BR> +�Ōv�Z����܂��B +<LI>remainder</LI><BR> +r=a.remainder(b)<BR> +a/b �̏�] r ���v�Z���܂��B<BR> +c = (a/b).fix <BR> +r = a - c*b<BR> +�Ōv�Z����܂��B + +<LI>abs</LI><BR> +���̐�Βl<BR> +c = a.abs<BR> + +<LI>to_i</LI><BR> +�����_�ȉ����̂ĂĐ����ɕϊ����܂��B<BR> +i = a.to_i<BR> +i �͒l�ɉ����� Fixnum �� Bignum �ɂȂ�܂��B +a �� Infinity �� NaN �̂Ƃ��Ai �� nil �ɂȂ�܂��B +<LI>to_f</LI><BR> +dup �ƑS�������ł��B +�����l�� BigDecimal �I�u�W�F�N�g�����܂��B +<LI>to_s</LI><BR> +������ɕϊ����܂�("0.xxxxxEn"�̌`�ɂȂ�܂��j�B<BR> +s = a.to_s +<LI>to_s2</LI><BR> +������ɕϊ����܂��B���������� n �����ɋŋ��܂��B<BR> +s = a.to_s2(n) +<LI>exponent</LI><BR> +�w�����𐮐��l�ŕԂ��܂��B +n = a.exponent <BR> +�� a �̒l�� 0.xxxxxxx*10**n ���Ӗ����܂��B + +<LI>E</LI><BR> +���R�ΐ��̒�e(=2.718281828....)���v�Z���܂��i�����Ƀe�C���[�W�J�Łj�B<BR> +e = BigDecimal::E(n)<BR> +n�͕K�v�ȗL�������𐮐��Ŏw�肵�܂��B +<LI>PI</LI><BR> +�~����(=3.14159265358979....)���v�Z���܂��iJ�DMachin�̌�����p���܂��j�B<BR> +e = BigDecimal::PI(n)<BR> +n �͕K�v�ȗL�������𐮐��Ŏw�肵�܂��B +<LI>BASE</LI><BR> +�����Ŏg�p������̒l�ł��B������ 32 �r�b�g�̏����n�ł�10000�ł��B<BR> +b = BigDecimal::BASE<BR> +<LI>mode</LI><BR> +BigDecimal�̎��s���ʂ𐧌䂵�܂��B�ȉ��̎g�p���@����`����Ă��܂��B<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag)<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag)<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag)<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag)<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag)<BR> +f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)<BR> + +EXCEPTION_NaN �͌��ʂ� NaN �ɂȂ����Ƃ��̎w��ł��B +EXCEPTION_INFINITY �͌��ʂ�������(�}Infinity) +�ɂȂ����Ƃ��̎w��ł��B +EXCEPTION_UNDERFLOW �͎w�������A���_�[�t���[����Ƃ��̎w��ł��B +EXCEPTION_OVERFLOW �͎w�������I�[�o�[�t���[����Ƃ��̎w��ł��B +EXCEPTION_ZERODIVIDE �̓[���ɂ�銄��Z�����s�����Ƃ��̎w��ł��B +EXCEPTION_ALL �́A�\�ȑS�Ăɑ��Ĉꊇ���Đݒ肷��Ƃ��� +�g�p���܂��B +flag �� true �̂Ƃ��́A�w�肵����ԂɂȂ����Ƃ��ɗ�O�s +����悤�ɂȂ�܂��B +flag �� false�i�f�t�H���g�j�Ȃ�A��O�͔��s����܂���B�v�Z���ʂ� +�ȉ��̂悤�ɂȂ�܂��B<BR> +EXCEPTION_NaN �̂Ƃ��A��(NaN)<BR> +EXCEPTION_INFINITY �̂Ƃ��A����(+ or -Infinity)<BR> +EXCEPTION_UNDERFLOW �̂Ƃ��A�[��<BR> +EXCEPTION_OVERFLOW �̂Ƃ��A+Infinity �� -Infinity<BR> +EXCEPTION_ZERODIVIDE �̂Ƃ��A+Infinity �� -Infinity<BR> +EXCEPTION_INFINITY�AEXCEPTION_OVERFLOW�AEXCEPTION_ZERODIVIDE +�͍��̂Ƃ��듯���ł��B<BR> +�߂�l�́A�ݒ��̒l�ł��B�u�l�v�̈Ӗ��́A�Ⴆ�� +BigDecimal::EXCEPTION_NaN�Ɓu�l�v�� & �� �[���ȊO�Ȃ�� +EXCEPTION_NaN���ݒ肳��Ă���Ƃ����Ӗ��ł��B +flag �� nil�A�܂��́Atrue �� false �ȊO�Ȃ猻�݂̐ݒ�l���Ԃ�܂��B + +<LI>limit([n])</LI><BR> +���������BigDecimal�I�u�W�F�N�g�̍ő包����n���ɐ������܂��B�߂�l�� +�ݒ肷��O�̒l�ł��B�ݒ�l�̃f�t�H���g�l�͂O�ŁA�����������Ƃ����Ӗ��ł��B +n���w�肵�Ȃ��ꍇ�́A����̍ő包�����Ԃ�܂��B<BR> +mf = BigDecimal::limit(n)<BR> +<LI>sign</LI><BR> +�l�̑�����Ԃ��܂��B +n = a.sign <BR> +�Ƃ����Ƃ� n �̒l�� a ���ȉ��̂Ƃ����Ӗ����܂��B<BR> +() �̒��̐����́A���ۂ̒l�ł�(<A HREF="#STRUCT">�u�����\���v</A>���Q��)�B<BR> +n = BigDecimal::SIGN_NaN(0) : a �� NaN<BR> +n = BigDecimal::SIGN_POSITIVE_ZERO(1) : a �� +0<BR> +n = BigDecimal::SIGN_NEGATIVE_ZERO(-1) : a �� -0<BR> +n = BigDecimal::SIGN_POSITIVE_FINITE(2) : a �͐��̒l<BR> +n = BigDecimal::SIGN_NEGATIVE_FINITE(-2) : a �͕��̒l<BR> +n = BigDecimal::SIGN_POSITIVE_INFINITE(3) : a ��+Infinity<BR> +n = BigDecimal::SIGN_NEGATIVE_INFINITE(-3) : a ��-Infinity<BR> + +<LI>nan?</LI><BR> +a.nan? �� a ��NaN�̂Ƃ��^��Ԃ��܂��B +<LI>infinite?</LI><BR> +a.infinite? �� a ��+���܂���-���̂Ƃ��^��Ԃ��܂��B +<LI>finite?</LI><BR> +a.finite? �� a �����܂��� NaN �łȂ��Ƃ��^��Ԃ��܂��B + +<LI>to_parts</LI><BR> +BigDecimal �l�� 0.xxxxxxx*10**n �ƕ\�������Ƃ��ɁA�����iNaN�̂Ƃ��� +0�A����ȊO��+1��-1�ɂȂ�܂��j�A +���������̕�����i"xxxxxxx"�j�ƁA��i10�j�A�X�Ɏw�� n ��z��� +�Ԃ��܂��B<BR> +a=BigDecimal::new("3.14159265",10)<BR> +f,x,y,z = a.to_parts<BR> +�Ƃ���ƁAf=+1�Ax="314159265"�Ay=10�Az=1�ɂȂ�܂��B<BR> +�]���āA<BR> +s = "0."+x<BR> +b = f*(s.to_f)*(y**z)<BR> +�� Float �ɕϊ����邱�Ƃ��ł��܂��B +<LI>inspect</LI><BR> +�f�o�b�O�o�͂Ɏg�p����܂��B<BR> +p a=BigDecimal::new("3.14",10)<BR> +�Ƃ���ƁA[0x112344:'0.314E1',4(12)]�̂悤�ɏo�͂���܂��B +�ŏ���16�i���̓I�u�W�F�N�g�̃A�h���X�A���� '0.314E1' �͒l�A +����4�͌��݂̗L������(�\������傫�����Ƃ�����܂�)�A +�Ō�̓I�u�W�F�N�g����蓾��ő包���ɂȂ�܂��B + +<LI>dup</LI><BR> +�����l�� BigDecimal �I�u�W�F�N�g�����܂��B +<LI>sqrt</LI><BR> +a�̗L���� n ���̕������in �̕������ł͂���܂���j�B +����܂��A�����Ƀj���[�g���@�Ōv�Z���܂��B<BR> +c = a.sqrt(n)<BR> +<LI>sincos</LI><BR> +a �̗L���� n ���� sin �� cos ���Ɂi�e�C���[�W�J�Łj�v�Z���āA + sin �� cos �̔z���Ԃ��܂��B +n �͕K�v�ȗL�������ł��i n �� sin �� cos ���v�Z����킯�ł͂���܂���j�B +<BR> +sin,cos = a.sincos(n)<BR> +<LI>exp</LI><BR> +���R�ΐ��̒�e(=2.718281828....)�� a ����v�Z���܂��B<BR> +c = a.exp(n)<BR> +n �͕K�v�ȗL�������ł��B +<LI>power</LI><BR> +a �� n ����v�Z���܂��B���͐����B<BR> +c = a.power(n)<BR> +���ʂƂ��� c �̗L������ a �� n �{�ȏ�ɂȂ�̂Œ��ӁB +<LI>zero?</LI><BR> +a �� 0 �Ȃ� true �ɂȂ�܂��B<BR> +c = a.zero?<BR> +<LI>nonzero?</LI><BR> +a �� 0 �Ȃ� false�A0 �ȊO�Ȃ� a ���̂��̂��Ԃ�܂��B<BR> +c = a.nonzero?<BR> +<LI><=></LI><BR> +a==b �Ȃ� 0�Aa > b �Ȃ� 1�Aa < b �Ȃ� -1 �ɂȂ�܂��B<BR> +c = a <=> b <BR> +</UL> +��́A�ǂ�Ŏ��̔@���ł��B<BR> +<UL> +<LI>==</LI> +<LI>===</LI> +�u==�v�Ɠ����ł��� case ���Ŏg�p����܂��B +<LI>!=</LI> +<LI><</LI> +<LI><=</LI> +<LI>></LI> +<LI>>=</LI> +</UL> +<H3>coerce�ɂ���</H3> +BigDecimal �I�u�W�F�N�g���Z�p���Z�q�̍��ɂ���Ƃ��́ABigDecimal �I�u�W�F�N�g�� +�E�ɂ���I�u�W�F�N�g��(�K�v�Ȃ�) BigDecimal �ɕϊ����Ă���v�Z���܂��B +�]���āABigDecimal �I�u�W�F�N�g�ȊO�ł����l���Ӗ�������̂Ȃ�E�ɒu���� +���Z�͉\�ł��B<BR><BR> +������Ő��l��^����ꍇ�͒��ӂ��K�v�ł��B���l�ɕϊ��ł��Ȃ�����������ƁA +�P�ɕϊ����~�߂邾���ŃG���[�ɂ͂Ȃ�܂���B"10XX"�Ȃ�P�O�A"XXXX"�͂O +�ƈ����܂��B<BR> +<CODE><PRE> + a = BigDecimal.E(20) + c = a * "0.123456789123456789123456789" # ������ BigDecimal �ɕϊ����Ă���v�Z +</PRE></CODE> +��������\�������Ƃ��āA"Infinity"�A"+Infinity"�A"-Infinity"�A"NaN" +���g�p�ł��܂�(�啶���E����������ʂ��܂�)�B�������Amode ���\�b�h�� false �� +�w�肵���ꍇ�͗�O���������܂��B +<BR> +�܂��ABigDecimal�N���X�� coerce�iRuby�{�Q�Ɓj���T�|�[�g���Ă��܂��B +�]���āABigDecimal �I�u�W�F�N�g���E�ɂ���ꍇ�����͑��v�ł��B +�����A���݂� Ruby �C���^�v���^�̎d�l��A�������ɂ���ƌv�Z�ł��܂���B<BR> +<CODE><PRE> + a = BigDecimal.E(20) + c = "0.123456789123456789123456789" * a # �G���[ +</PRE></CODE> +�K�v��������Ƃ͎v���܂��A�ǂ����Ă��ƌ����l�� + String �I�u�W�F�N�g���p�������V���ȃN���X���쐬���Ă���A +���̃N���X�� coerce ���T�|�[�g���Ă��������B + +<hr> +<A NAME="#UNDEF"> +<H2>�����A�A�[���̈���</H2> +�u�����v�Ƃ͕\���ł��Ȃ����炢�傫�Ȑ��ł��B���ʂɈ������߂� + +Infinity�i���̖�����j�� -Infinity�i���̖�����j�Ƃ��� +�悤�ɕ\�L����܂��B +������ 1.0/0.0 �̂悤�Ƀ[���Ŋ���悤�Ȍv�Z�������Ƃ��ɐ�������܂��B +<BR><BR> +�u�v�� 0.0/0.0 �� Infinity-Infinity ���̌��ʂ���`�ł��Ȃ� +�v�Z�������Ƃ��ɐ�������܂��B�� NaN�iNot a Number�j�ƕ\�L����܂��B +NaN ���܂ތv�Z�͑S�� NaN �ɂȂ�܂��B�܂� NaN �͎������܂߂āA�ǂ�Ȑ� +�Ƃ���v���܂���B +<BR><BR> +�[���� +0.0 �� -0.0 �����݂��܂��B�������A+0.0==-0.0 �� true �ł��B +<BR><BR> +Infinity�ANaN�A +0.0 �� -0.0 �����܂v�Z���ʂ͑g�ݍ��킹�� +��蕡�G�ł��B�����̂���l�́A�ȉ��̃v���O���������s���Č��ʂ� +�m�F���Ă��������i���ʂɂ��āA�^���ԈႢ�����ꂽ���� +���m�点�肢�܂��j�B + +<PRE> +<CODE> +require "bigdecimal" + +aa = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN) +ba = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN) +opa = %w(+ - * / <=> > >= < == != <=) + +for a in aa + for b in ba + for op in opa + x = BigDecimal::new(a) + y = BigDecimal::new(b) + eval("ans= x #{op} y;print a,' ',op,' ',b,' ==> ',ans.to_s,\"\n\"") + end + end +end +</CODE> +</PRE> + +<hr> +<A NAME="#STRUCT"> +<H2>�����\��</H2> +BigDecimal�����ŕ��������_�͍\����(Real)�ŕ\������܂��B +���̂����������� unsigned long �̔z��(�ȉ��̍\���̗v�ffrac)�ŊǗ�����܂��B +�T�O�I�ɂ́A�ȉ��̂悤�ɂȂ�܂��B<BR><BR> + <���������_��> = 0.xxxxxxxxx*BASE**n<BR><BR> +�����ŁAx�͉�������\�������ABASE�͊�i�P�O�i�Ȃ�P�O�j�An�͎w������\�� +�����l�ł��BBASE���傫���قǁA�傫�Ȑ��l���\���ł��܂��B�܂�A�z��̃T�C�Y�� +���Ȃ��ł��܂��BBASE�͑傫���قǓs�����悢�킯�ł����A�f�o�b�O�̂��₷���Ȃǂ� +�l�����āA10000�ɂȂ��Ă��܂��iBASE��VpInit()���Ŏ����I�Ɍv�Z���܂��j�B +����́A32�r�b�g�����̏ꍇ�ł��B64�r�b�g�����̏ꍇ�͂����Ƒ傫�Ȓl�ɂȂ�܂��B +�c�O�Ȃ���A64�r�b�g�����ł̃e�X�g�͂܂�����Ă��܂���i�����A���ꂽ��������� +���ʂ������Ă�����������肪�����ł��j�B +BASE��10000�̂Ƃ��́A�ȉ��̉������̔z��(frac)�̊e�v�f�ɂ͍ő�łS���� +�������i�[����܂��B<BR><BR> +���������_�\����(Real)�͈ȉ��̂悤�ɂȂ��Ă��܂��B +<BR> +<CODE><PRE> + typedef struct { + unsigned long MaxPrec; // �ő吸�x(frac[]�̔z��T�C�Y) + unsigned long Prec; // ���x(frac[]�̎g�p�T�C�Y) + short sign; // �ȉ��̂悤�ɕ������̏�Ԃ��`���܂��B + // ==0 : NaN + // 1 : +0 + // -1 : -0 + // 2 : ���̒l + // -2 : ���̒l + // 3 : +Infinity + // -3 : -Infinity + unsigned short flag; // �e��̐���t���b�O + int exponent; // �w�����̒l(������*BASE**exponent) + unsigned long frac[1]; // �������̔z��(��) + } Real; +</CODE></PRE> +�Ⴆ�� 1234.56784321 �Ƃ���������(BASE=10000�Ȃ�)<BR> +<PRE> + 0.1234 5678 4321*(10000)**1 +</PRE> +�ł����� frac[0]=1234�Afrac[1]=5678�Afrac[2]=4321�A +Prec=3�Asign=2�Aexponent=1 �ƂȂ�܂��BMaxPrec�� +Prec ���傫��������ł����܂��܂���Bflag �� +�g�p���@�͎����Ɉˑ����ē����Ŏg�p����܂��B + +<hr> +<A NAME="#BASE"> +<H2>2�i��10�i</H2> +BigDecimal �� <���������_��> = 0.xxxxxxxxx*10**n �Ƃ���10�i�`���Ő��l��ێ����܂��B +�������A�v�Z�@�̕��������_���̓����\���́A�����܂ł��Ȃ� <���������_��> = 0.bbbbbbbb*2**n �Ƃ��� +2�i�`�������ʂł�(x �� 0 ���� 9 �܂ŁAb �� 0 �� 1 �̐���)�B +BigDecimal ���Ȃ�10�i�̓����\���`�����̗p�����̂����ȉ��ɐ������܂��B +<H4>10�i�̃����b�g</H4> +<DL> +<DT>�f�o�b�O�̂��₷�� +<DD>�܂��A�v���O�����쐬���y�ł��Bfrac[0]=1234�Afrac[1]=5678�Afrac[2]=4321�A +exponent=1�Asign=2 �Ȃ琔�l�� 1234.56784321 �ł���̂͌���Β����ɕ�����܂��B + +<DT>10�i�\�L���ꂽ���l�Ȃ�m���ɓ����\���ɕϊ��ł��� +<DD>�Ⴆ�A�ȉ��̂悤�ȃv���O�����͑S���덷������ +�v�Z���邱�Ƃ��ł��܂��B�ȉ��̗�́A��s�Ɉ�̐��l +�������Ă���t�@�C�� file �̍��v���l�����߂���̂ł��B +<PRE><CODE> + file = File::open(....,"r") + s = BigDecimal::new("0") + while line = file.gets + s = s + line + end +</CODE></PRE> +���̗��2�i���ł��ƌ덷�����荞�މ\��������܂��B +�Ⴆ�� 0.1 ��2�i�ŕ\������� 0.1 = b1*2**(-1)+b1*2**(-2)+b3*2**(-3)+b4*2**(-4).... +�Ɩ����ɑ����Ă��܂��܂�(b1=0,b2=0,b3=0,b4=1...)�B������ bn(n=1,2,3,...) �� +2�i��\������ 0 �� 1 �̐�����ł��B�]���āA�ǂ����őł���K�v������܂��B +�����ŕϊ��덷������܂��B�������A������ēx10�i�\�L�ɂ��Ĉ������悤�� +�ꍇ�͓K�Ȋۂߑ���i�l�̌ܓ��j�ɂ���čĂ� "0.1" �ƕ\������܂��B�������A +�����ł͐��m�� 0.1 �ł͂���܂���B + +<DT>�L�������͗L���ł���i�܂莩������ł���j +<DD>0.1 ��\�����邽�߂̗̈�͂�������̔z��v�f�i frac[0]=1 �j�ōς݂܂��B +�z��v�f�̐���10�i���l���玩���I�Ɍ���ł��܂��B����́A�ϒ����������_���Z�ł� +�厖�Ȃ��Ƃł��B�t�� 0.1 ��2�i�\�������Ƃ��ɂ�2�i�̗L�����������ɂ���̂� 0.1 �� +���������ł͌���ł��܂���B +</DL> + +<H3>10�i�̃f�����b�g</H3> +���͍��܂ł̃����b�g�́A���̂܂܃f�����b�g�ɂ��Ȃ�܂��B +���������A10�i��2�i�A2�i��10�i�ɕϊ�����悤�ȑ���͕ϊ��덷 +���ꍇ��������邱�Ƃ͂ł��܂���B +���Ɍv�Z�@�����Ɏ�荞�܂ꂽ2�i���l�� BigDecimal �̓����\���� +�ϊ�����Ƃ��ɂ͌덷���������Ȃ��ꍇ������܂��B + +<H3>�ŏ��͉����H</H3> +�����Ōv�Z����Ƃ��ɂ킴�킴2�i�����g���l�͋ɂ߂Ă܂�ł��B +�v�Z�@�Ƀf�[�^����͂���Ƃ����قƂ�ǂ̏ꍇ�A +10�i���œ��͂��܂��B���̌��ʁAdouble ���̌v�Z�@���� +�\���͍ŏ�����덷�������Ă���ꍇ������܂��B +BigDecimal �̓��[�U���͂��덷�����Ŏ�荞�ނ��Ƃ��ł��܂��B +�f�o�b�O�����₷���̂ƁA�f�[�^�ǂ݂��ݎ��Ɍ덷������Ȃ� +�Ƃ����̂����ۂ̃����b�g�ł��B + +<hr> +<A NAME="#PREC"> +<H2>�v�Z���x�ɂ���</H2> +c = a op b �Ƃ����v�Z(op �� + - * /)�������Ƃ��̓���� +�ȉ��̂悤�ɂȂ�܂��B<BR><BR> +�P�D��Z�Ə��Z��(a �̗L������)+(a �̗L������)���̍ő包���i���ۂ́A�]�T�������āA +���������傫���Ȃ�܂��j�����ϐ� c ��V���ɐ������܂��B +�����Z�̏ꍇ�́A�덷���o�Ȃ������̐��x������ c �����܂��B�Ⴆ�� + c = 0.1+0.1*10**(-100) �̂悤�ȏꍇ�Ac �̐��x�͂P�O�O���ȏ�̐��x�� +���悤�ɂȂ�܂��B +<BR> +�Q�D���� c = a op b �̌v�Z�����s���܂��B<BR><BR> +���̂悤�ɁA�����Z�Ə�Z�ł� c �͕K���u�덷���o�Ȃ��v�����̐��x�� +�����Đ�������܂��B���Z��(a �̗L������)+(a �̗L������)���̍ő包�� +������ c ����������܂����Ac = 1.0/3.0 �̂悤�Ȍv�Z�Ŗ��炩�Ȃ悤�ɁA + c �̍ő吸�x����Ƃ���Ōv�Z���ł�����ꍇ������܂��B<BR><BR> +������ɂ���Ac �̍ő吸�x�� a �� b ���傫���Ȃ�܂��̂� c ���K�v�Ƃ��� +�������[�̈�͑傫���Ȃ邱�Ƃɒ��ӂ��ĉ������B +<BR><BR> +���ӁF�u+,-,*,/�v�ł͌��ʂ̐��x�i�L�������j�������Ŏw��ł��܂���B +���x���R���g���[���������ꍇ�́A�ȉ��� add,sub ���̃��\�b�h +���g�p���܂��B<BR> + +<H3>�����Ő��x���R���g���[���������ꍇ</H3> +�����Ő��x(�L������)���R���g���[���������ꍇ�� assign�Aadd�Asub�Amult�Adiv ���̃��\�b�h +���g�p�ł��܂��B +�ȉ��̉~�������v�Z����v���O������̂悤�ɁA +���߂錅���͎����Ŏw�肷�邱�Ƃ��ł��܂��B +<BR><BR> +<CODE><PRE> +#!/usr/local/bin/ruby + +# +# pai.rb +# USAGE: ruby pai.rb n +# where n is the number of digits required. +# EX.: ruby pai.rb 1000 +# + +require "bigdecimal" +# +# Calculates 3.1415.... using J. Machin's formula. +# +def pai(sig) # sig: Number of significant figures + exp = -sig + pi = BigDecimal::new("0") + two = BigDecimal::new("2") + m25 = BigDecimal::new("-0.04") + m57121 = BigDecimal::new("-57121") + + u = BigDecimal::new("1") + k = BigDecimal::new("1") + w = BigDecimal::new("1") + t = BigDecimal::new("-80") + while (u.exponent >= exp) + t = t*m25 + u,r = t.div(k,sig) + pi = pi + u + k = k+two + end + + u = BigDecimal::new("1") + k = BigDecimal::new("1") + w = BigDecimal::new("1") + t = BigDecimal::new("956") + while (u.exponent >= exp ) + t,r = t.div(m57121,sig) + u,r = t.div(k,sig) + pi = pi + u + k = k+two + end + pi +end + +if $0 == __FILE__ + print "PAI("+ARGV[0]+"):\n" + p pai(ARGV[0].to_i) +end + +</PRE></CODE> +<HR> +<FONT size=2> +<I> +<A HREF="http://www.tinyforest.gr.jp"> +���� �ΗY +</A> +(E-Mail:<A HREF="mailto:[email protected]">&[email protected]></U></A>) +</I> +</FONT> +</TD> +</TR> +</TABLE> +</BODY> +</HTML> |