Is there an easy way or integrated function to find out the decimal places of a floating point number?
The number is parsed from a string, so one way is to count the digits after the ‘.’ sign, but that looks quite clumsy to me. Is there a possibility to get the information needed out of a
SOLUTION (one of them, of course 🙂 )
I chose to use the python decimal.Decimal class to help me with my problem:
e = abs(Decimal(string_value).as_tuple().exponent)
NOTE: this only works when the parameter from which the Decimal is constructed is a string and not a float (which would lead to floating point inaccuracies).
Thanks a lot for all other contributions.
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
>>> 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
Answered By – senderle
Answer Checked By – Gilberto Lyons (BugsFixing Admin)