mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
gh-121798: Add class method Decimal.from_number() (GH-121801)
It is an alternate constructor which only accepts a single numeric argument. Unlike to Decimal.from_float() it accepts also Decimal. Unlike to the standard constructor, it does not accept strings and tuples.
This commit is contained in:
parent
4b358ee647
commit
5217328f93
7 changed files with 122 additions and 0 deletions
|
|
@ -582,6 +582,21 @@ class Decimal(object):
|
|||
|
||||
raise TypeError("Cannot convert %r to Decimal" % value)
|
||||
|
||||
@classmethod
|
||||
def from_number(cls, number):
|
||||
"""Converts a real number to a decimal number, exactly.
|
||||
|
||||
>>> Decimal.from_number(314) # int
|
||||
Decimal('314')
|
||||
>>> Decimal.from_number(0.1) # float
|
||||
Decimal('0.1000000000000000055511151231257827021181583404541015625')
|
||||
>>> Decimal.from_number(Decimal('3.14')) # another decimal instance
|
||||
Decimal('3.14')
|
||||
"""
|
||||
if isinstance(number, (int, Decimal, float)):
|
||||
return cls(number)
|
||||
raise TypeError("Cannot convert %r to Decimal" % number)
|
||||
|
||||
@classmethod
|
||||
def from_float(cls, f):
|
||||
"""Converts a float to a decimal number, exactly.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue