pytho****@googl*****
pytho****@googl*****
2011年 11月 16日 (水) 22:51:51 JST
Revision: 8c1d213a88a0 Author: Arihiro TAKASE <hinac****@gmail*****> Date: Wed Nov 16 05:51:24 2011 Log: 差分翻訳 2.7.2: library/fractions http://code.google.com/p/python-doc-ja/source/detail?r=8c1d213a88a0 Modified: /library/fractions.rst /library/fractions.rst.diff ======================================= --- /library/fractions.rst Sat Nov 27 10:59:46 2010 +++ /library/fractions.rst Wed Nov 16 05:51:24 2011 @@ -16,29 +16,35 @@ .. class:: Fraction(numerator=0, denominator=1) Fraction(other_fraction) + Fraction(float) + Fraction(decimal) Fraction(string) - 最初のバージョンは *numerator* と *denominator* が :class:`numbers.Integral` - のインスタンスであることを要求し、 ``numerator/denominator`` の値を持っ た\ + 最初のバージョンは *numerator* と *denominator* が :class:`numbers.Rational` + のインスタンスであることを要求し、 ``numerator/denominator`` の値を持つ\ 新しい :class:`Fraction` インスタンスを返します。 *denominator* が :const:`0` ならば、 :exc:`ZeroDivisionError` を送出します。 二番目のバージョンは *other_fraction* が :class:`numbers.Rational` - のインスタンスであることを要求し、同じ値を持った新しい :class:`Fraction` + のインスタンスであることを要求し、同じ値を持つ新しい :class:`Fraction` インスタンスを返します。 - 最後のバージョンは二つの可能な形式のうちどちらかであるような\ + その次の二つのバージョンは、 :class:`float` と :class:`decimal.Decimal` + インスタンスを受け付け、それとちょうど同じ値を持つ :class:`Fraction` + インスタンスを返します。なお、二進浮動小数点数 (:ref:`tut-fp-issues` 参 照) + にお決まりの問題のため、 ``Fraction(1.1)`` の引数は 11/10 と正確に + 等しいとは言えないので、 ``Fraction(1.1)`` は予期した通りの + ``Fraction(11, 10)`` を返 *しません* 。 + 最後のバージョンは、 文字列またはユニコードのインスタンスを渡されると思っています。 - 一つめの形式は:: + 一つめの形式の通常の形式は:: [sign] numerator ['/' denominator] で、ここにオプションの ``sign`` は '+' か '-' のどちらかであり、\ ``numerator`` および ``denominator`` (もしあるならば) は十進数の\ - 数字の並びです。二つめの許容される形式は小数点を含んだ:: - - [sign] integer '.' [fraction] | [sign] '.' fraction - - の形をとり、ここで ``integer`` と ``fraction`` は数字の並びです。 + 数字の並びです。 + さらに、 :class:`float` コンストラクタで受け付けられる、有限の値を表す + 文字列は、必ず :class:`Fraction` コンストラクタでも受け付けられます。 どちらの形式でも入力される文字列は前後に空白があって構いません。 例を見ましょう:: @@ -58,6 +64,15 @@ Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) + >>> Fraction('7e-6') + Fraction(7, 1000000) + >>> Fraction(2.25) + Fraction(9, 4) + >>> Fraction(1.1) + Fraction(2476979795053773, 2251799813685248) + >>> from decimal import Decimal + >>> Fraction(Decimal('1.1')) + Fraction(11, 10) :class:`Fraction` クラスは抽象基底クラス :class:`numbers.Rational` @@ -65,6 +80,10 @@ インスタンスはハッシュ可能で、したがって不変(immutable)であるものとして\ 扱います。加えて、 :class:`Fraction` には以下のメソッドがあります: + .. versionchanged:: 2.7 + :class:`Fraction` コンストラクタは、今では :class:`float` や + :class:`decimal.Decimal` インスタンスを受けつけます。 + .. method:: from_float(flt) @@ -73,12 +92,18 @@ 気を付けてください ``Fraction.from_float(0.3)`` と ``Fraction(3, 10)`` の値は同じではありません。 + .. note:: From Python 2.7 以降では、 :class:`float` から直接 + :class:`Fraction` インスタンスを構成することも出来ます。 + .. method:: from_decimal(dec) このクラスメソッドは :class:`decimal.Decimal` である *dec* の正確な値 を表す :class:`Fraction` を構築します。 + .. note:: From Python 2.7 以降では、 :class:`decimal.Decimal` から直 接 + :class:`Fraction` インスタンスを構成することも出来ます。 + .. method:: limit_denominator(max_denominator=1000000) @@ -93,10 +118,12 @@ あるいは float で表された有理数を元に戻すのにも使えます: >>> from math import pi, cos - >>> Fraction.from_float(cos(pi/3)) + >>> Fraction(cos(pi/3)) Fraction(4503599627370497, 9007199254740992) - >>> Fraction.from_float(cos(pi/3)).limit_denominator() + >>> Fraction(cos(pi/3)).limit_denominator() Fraction(1, 2) + >>> Fraction(1.1).limit_denominator() + Fraction(11, 10) .. function:: gcd(a, b) ======================================= --- /library/fractions.rst.diff Sun Oct 30 17:04:23 2011 +++ /library/fractions.rst.diff Wed Nov 16 05:51:24 2011 @@ -43,19 +43,15 @@ where the optional ``sign`` may be either '+' or '-' and ``numerator`` and ``denominator`` (if present) are strings of -- decimal digits. The second permitted form is that of a number +- The second permitted form is that of a number - containing a decimal point:: - - [sign] integer '.' [fraction] | [sign] '.' fraction - -- where ``integer`` and ``fraction`` are strings of digits. In -- either form the input string may also have leading and/or trailing -- whitespace. Here are some examples:: -+ decimal digits. In addition, any string that represents a finite +- where ``integer`` and ``fraction`` are strings of digits.:: ++ In addition, any string that represents a finite + value and is accepted by the :class:`float` constructor is also -+ accepted by the :class:`Fraction` constructor. In either form the -+ input string may also have leading and/or trailing whitespace. -+ Here are some examples:: ++ accepted by the :class:`Fraction` constructor. :: >>> from fractions import Fraction >>> Fraction(16, -10)