To repeat what others have said (because I had already typed it out!), I’m not even sure such a value would be meaningful in the case of a floating point number, because of the difference between the decimal and binary representation; often a number representable by a finite number of decimal digits will have only an infinite-digit representation in binary.
In the case of a decimal.Decimal
object, you can retrieve the exponent using the as_tuple
method, which returns a namedtuple with sign
, digits
, and exponent
attributes:
>>> d = decimal.Decimal('56.4325')
>>> d.as_tuple().exponent
-4
>>> d = decimal.Decimal('56.43256436')
>>> d.as_tuple().exponent
-8
The negation of the exponent is the number of digits after the decimal point, unless the exponent is greater than 0
.