HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //usr/local/lib/python3.9/site-packages/future/builtins/__pycache__/newround.cpython-39.pyc
a

q�dgv�@sPdZddlmZddlmZmZmZddlmZm	Z	d
dd�Z
dd	�ZdgZdS)zD
``python-future``: pure Python implementation of Python 3 round().
�)�division)�PYPY�PY26�bind_method)�Decimal�ROUND_HALF_EVENNcCs�d}|durd}d}t|d�r(|�|�Std�|}dtt|��vrNt|�}t|t�r^|}ntsnt�|�}nt	|�}|dkr�t
||�|}n|j|td�}|r�t
|�St|�SdS)	a�
    See Python 3 documentation: uses Banker's Rounding.

    Delegates to the __round__ method if for some reason this exists.

    If not, rounds a number to a given precision in decimal digits (default
    0 digits). This returns an int when called with one argument,
    otherwise the same type as the number. ndigits may be negative.

    See the test_round method in future/tests/test_builtins.py for
    examples.
    FNTr�	__round__�10Znumpy)�rounding)�hasattrrr�repr�type�float�
isinstancer�
from_float�
from_float_26�newround�quantizer�int)�number�ndigitsZ
return_int�exponent�d�result�r�B/usr/local/lib/python3.9/site-packages/future/builtins/newround.pyr
s(



rc	Cs�ddl}ddlm}t|ttf�r*t|�S|�|�s>|�|�rJtt	|��S|�
d|�dkr`d}nd}t|���\}}dd�}||�d}||t
|d|�|�}|S)	a�Converts a float to a decimal number, exactly.

    Note that Decimal.from_float(0.1) is not the same as Decimal('0.1').
    Since 0.1 is not exactly representable in binary floating point, the
    value is stored as the nearest representable value which is
    0x1.999999999999ap-4.  The exact equivalent of the value in decimal
    is 0.1000000000000000055511151231257827021181583404541015625.

    >>> Decimal.from_float(0.1)
    Decimal('0.1000000000000000055511151231257827021181583404541015625')
    >>> Decimal.from_float(float('nan'))
    Decimal('NaN')
    >>> Decimal.from_float(float('inf'))
    Decimal('Infinity')
    >>> Decimal.from_float(-float('inf'))
    Decimal('-Infinity')
    >>> Decimal.from_float(-0.0)
    Decimal('-0')

    rN)�_dec_from_tripleg�?�cSs$|dkrttt|���dSdSdS)Nr�)�len�bin�abs)rrrr�
bit_length_sz!from_float_26.<locals>.bit_length�)�math�decimalrrr�longr�isinf�isnanr�copysignr!�as_integer_ratio�str)	�fZ_mathr�sign�nrr"�krrrrr=sr)N)
�__doc__�
__future__rZfuture.utilsrrrr%rrrr�__all__rrrr�<module>s
0,