관리-도구
편집 파일: fractions.cpython-310.pyc
o 6��fRn � @ sx d Z ddlmZ ddlZddlZddlZddlZddlZdgZej j Zej jZ e�dejejB �ZG dd� dej�ZdS )z+Fraction, infinite-precision, real numbers.� ��DecimalN�FractionaC \A\s* # optional whitespace at the start, then (?P<sign>[-+]?) # an optional sign, then (?=\d|\.\d) # lookahead for digit or .digit (?P<num>\d*) # numerator (possibly empty) (?: # followed by (?:/(?P<denom>\d+))? # an optional denominator | # or (?:\.(?P<decimal>\d*))? # an optional fractional part (?:E(?P<exp>[-+]?\d+))? # and optional exponent ) \s*\Z # and optional whitespace to finish c s� e Zd ZdZdZdRdd�� fdd�Zed d � �Zedd� �Zd d� Z dSdd�Z edd� �Zedd� �Z dd� Zdd� Zdd� Zdd� Zeeej�\ZZdd� Zeeej�\ZZd d!� Zeeej�\ZZd"d#� Zeeej�\Z Z!d$d%� Z"ee"ej#�\Z$Z%d&d'� Z&ee&e'�\Z(Z)d(d)� Z*ee*ej+�\Z,Z-d*d+� Z.d,d-� Z/d.d/� Z0d0d1� Z1d2d3� Z2d4d5� Z3d6d7� Z4d8d9� Z5dTd:d;�Z6d<d=� Z7d>d?� Z8d@dA� Z9dBdC� Z:dDdE� Z;dFdG� Z<dHdI� Z=dJdK� Z>dLdM� Z?dNdO� Z@dPdQ� ZA� ZBS )Ur a] This class implements rational numbers. In the two-argument form of the constructor, Fraction(8, 6) will produce a rational number equivalent to 4/3. Both arguments must be Rational. The numerator defaults to 0 and the denominator defaults to 1 so that Fraction(3) == 3 and Fraction() == 0. Fractions can also be constructed from: - numeric strings similar to those accepted by the float constructor (for example, '-2.3' or '1e10') - strings of the form '123/456' - float and Decimal instances - other Rational instances (including integers) �� _numerator�_denominatorr NT�� _normalizec s t t| ��| �}|du r�t|�tu r||_d|_|S t|tj �r*|j |_|j|_|S t|tt f�r;|�� \|_|_|S t|t�r�t�|�}|du rOtd| ��t|�d�pVd�}|�d�}|rdt|�}n8d}|�d�}|rdt|� }|| t|� }||9 }|�d �} | r�t| �} | d kr�|d| 9 }n|d| 9 }|�d�dkr�| }n3td ��t|�t u r�t|�u r�n nnt|tj �r�t|tj �r�|j |j |j |j }}ntd��|d kr�td| ��|r�t�||�} |d k r�| } || }|| }||_||_|S )a� Constructs a Rational. Takes a string like '3/2' or '1.5', another Rational instance, a numerator/denominator pair, or a float. Examples -------- >>> Fraction(10, -8) Fraction(-5, 4) >>> Fraction(Fraction(1, 7), 5) Fraction(1, 35) >>> Fraction(Fraction(1, 7), Fraction(2, 3)) Fraction(3, 14) >>> Fraction('314') Fraction(314, 1) >>> Fraction('-35/4') Fraction(-35, 4) >>> Fraction('3.1415') # conversion from numeric string Fraction(6283, 2000) >>> Fraction('-47e-2') # string may include a decimal exponent Fraction(-47, 100) >>> Fraction(1.47) # direct construction from float (exact conversion) Fraction(6620291452234629, 4503599627370496) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(Decimal('1.47')) Fraction(147, 100) N� z Invalid literal for Fraction: %rZnum�0�denom�decimal� �expr Zsign�-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))�superr �__new__�type�intr r � isinstance�numbers�Rational� numerator�denominator�floatr �as_integer_ratio�str�_RATIONAL_FORMAT�match� ValueError�group�len� TypeError�ZeroDivisionError�math�gcd)�clsr r r �self�mr r Zscaler �g�� __class__� �0/opt/alt/python310/lib64/python3.10/fractions.pyr >