Table of Contents
How to count decimal places in Python?
In Python, we can represent decimal values using the float
datatype. The decimal point divides the integer from the fractional part. The maximum value a float
object can have is 1.8 x 10^308.
In this article, we will discuss how to count the decimal places in Python. We will take a float value and return the total number of digits after the decimal point.
Using the decimal
library to count decimal places in Python
The decimal
library allows us to work with float
values. We can convert these values to objects of the Decimal
class from this library. There are many methods associated with this class that can perform various functions on these values.
The as_tuple()
function is used to return the information about the floating value in a tuple. It returns the sign of the number (positive or negative), the digits in the number, and the exponent value.
The exponent
attribute can be used to return the exponent value from this tuple. This exponent value is the same as the number of digits in the decimal place with a negative sign. We can use the abs()
function to get the absolute value of this attribute, removing the negative sign.
See the code below.
1 2 3 4 5 |
import decimal d = decimal.Decimal('7.856') print(abs(d.as_tuple().exponent)) |
Output:
In the above example, we use the decimal.Decimal()
constructor to create an object of the Decimal
class. We get the exponent value of this object using the as_tuple()
function. Its absolute value is displayed using the abs()
function.
Using the len()
and split()
function to count decimal places in Python
The len()
and split()
function work with string objects. The former is used to return the length of the given string and the latter can split a given string into a list of substrings based on some character.
We can use these functions together to count decimal places in Python.
First, we will convert the float value to a string using the str()
function. Then we will split the list based on the .
character to return two substrings. The second substring contains the decimal part and its length can be calculated using the len()
function.
For example,
1 2 3 4 5 |
a = 5.758 n = len(str(a).split(".")[1]) print(n) |
Output:
Further reading:
Using the find()
function to count decimal places in Python
The find()
function is used to return the index of the first occurrence of an element in a string. We can use it with string slicing to count decimal places in Python.
We can slice string using the square brackets ([]
). In these brackets, we can specify the start, end, and step values for the string slicing. We can specify the step as -1
to reverse the string. We can convert a float value to a string using the str()
function and reverse it using this method.
After reversing the string, the decimal part comes in front. We can find the occurrence of the decimal point using the find()
function. The index of the decimal point will be the same as the total decimal places.
This logic is implemented in the code below.
1 2 3 4 5 |
a = 7.856 n = str(a)[::-1].find('.') print(n) |
Output:
Conclusion
To conclude, we discussed several methods to count decimal places in Python. In our first method, we used the Decimal
class from the decimal
library. We can use the as_tuple()
function to get the exponent value from the objects of this class that represent the decimal places.
The other two methods involved converting the float value to a string. In the first method, we split the string into the real and fractional parts using the split()
function and found the decimal places using the len()
function on the fractional part.
In the final method, we reversed the number using string slicing and found the occurrence of the decimal point which corresponds to the total decimal places.