Converts a finite Decimal instance to a rational number, exactly.
(cls, dec)
| 348 | |
| 349 | @classmethod |
| 350 | def from_decimal(cls, dec): |
| 351 | """Converts a finite Decimal instance to a rational number, exactly.""" |
| 352 | from decimal import Decimal |
| 353 | if isinstance(dec, numbers.Integral): |
| 354 | dec = Decimal(int(dec)) |
| 355 | elif not isinstance(dec, Decimal): |
| 356 | raise TypeError( |
| 357 | "%s.from_decimal() only takes Decimals, not %r (%s)" % |
| 358 | (cls.__name__, dec, type(dec).__name__)) |
| 359 | return cls._from_coprime_ints(*dec.as_integer_ratio()) |
| 360 | |
| 361 | @classmethod |
| 362 | def _from_coprime_ints(cls, numerator, denominator, /): |