Python decimal module – 7 functions you need to know!

PYTHON DECIMAL MODULE

Hey, all! In this article, we will have a look at one of the interesting modules – The Python Decimal module.

Be it any domain, we do come across the need to search for functions to perform mathematical operations. Python decimal module serves us with all the mathematical functions we need.

So, let us get started!


Understanding the Python decimal module

Python decimal module contains various functions to handle numeric data and perform different mathematical operations on it. Using the decimal module, we can handle decimal numbers efficiently throughout our program.

The decimal module provides us with functions to control and overcome the problem of precision in the decimal values.

Having understood the need of Decimal module, let us now have a look at some of the important functions offered by the module.

In order to use the functions, we need to import the module as shown below:

import decimal

The Decimal Module Functions and Implementation

Different arithmetic operations can be performed on the decimal or numeric data to boost the outcome.

We can define the decimal point numbers using the decimal.Decimal() function as shown below–

Syntax:

import decimal
variable = decimal.Decimal(decimal-number)

Further, we can control the precision value of the results of the decimal point numbers using an in-built function by the decimal module — decimal.getcontext().prec function.

Syntax:

decimal.getcontext().prec = precision value

The below-explained functions help us perform decimal point arithmetic operations in an efficient manner and at a great pace.


1. The exp() function – Exponent calculation

The exp() function computes the exponent value i.e. e^x of the particular decimal point number passed to it.

Syntax:

decimal.Decimal(decimal-number).exp()

Example:

import decimal as d

d.getcontext().prec = 5

#Intializing with an addition operation
val = d.Decimal(12.201) + d.Decimal(12.20)

#Calculating exponential of the decimal value
exp = val.exp()

#variable with no calculations
no_math = d.Decimal(1.131231)

print("Sum: ",val)
print("Exponential: ", exp)
print(no_math)

Output:

Decimal Number:  24.401                                                                                                       
3.9557E+10                                                                                                                    
1.131231000000000097571728474576957523822784423828125   

Notice how the total number of digits in our output are 5? That’s because of the precision value that we set up here.

One thing to remember is that the precision value applies when you perform mathematical operations on two decimals not when you directly initiate a variable with the values as shown with the “no_math” variable above.


2. The sqrt() function – Square Root

The sqrt() function calculates and returns the square root value of the passed decimal number to it.

Syntax:

decimal.Decimal(decimal-number).sqrt()

Example:

import decimal as d

d.getcontext().prec = 3

val = d.Decimal(122.20)
sqrt = val.sqrt()
print("Decimal Number: ",val)
print("Square root of the decimal number: ",sqrt)

Output:

Decimal Number:  122.2000000000000028421709430404007434844970703125
Square root of the decimal number:  11.1

Again, note how the declared value contains the complete decimal number while the computed value follows our precision set of 3 digits.

To find more mathematical operations, read our article on math module in Python


3. Logarithmic functions

Decimal module provides us with the below functions to calculate the logarithmic values of the decimal point numbers–

  • decimal.ln()
  • decimal.log10()

The decimal.ln() function returns the natural log value of the decimal number as shown below–

decimal.Decimal(decimal-number).ln()

The decimal.log10() function is used to calculate the log value of the base 10 of the decimal number passed to it.

decimal.Decimal(decimal-number).log10()

Example:

import decimal as d

d.getcontext().prec = 2

val = d.Decimal(122.20)

log = val.ln()
print("Natural log value of the decimal number: ",log)

log_10 = val.log10()
print("Log value with base 10 of the decimal number: ",log_10)

Output:

Natural log value of the decimal number:  4.8
Log value with base 10 of the decimal number:  2.1

4. The compare() function

The decimal.compare() function compares two decimal point numbers and returns the values depending upon the conditions as follows–

  • It returns -1, if the first decimal number is smaller than the second decimal number.
  • It returns 1, if the first decimal number is greater than the second decimal number.
  • Returns 0, if both the decimal point values are equal.

Example:

import decimal as d

valx = d.Decimal(122.20)
valy = d.Decimal(123.01)

print("Value 1: ",valx)
print("Value 2: ",valy)

compare = valx.compare(valy)
print(compare)

Output:

Value 1:  122.2000000000000028421709430404007434844970703125
Value 2:  123.0100000000000051159076974727213382720947265625
-1

5. The copy_abs() function

The decimal.copy_abs() function returns the absolute values of the signed decimal number passed to it.

Syntax:

decimal.Decimal(signed decimal number).copy_abs()

Example:

import decimal as d

valx = d.Decimal(-122.20)
print("Value 1: ",valx)

absolute = valx.copy_abs()
print("Absolute value of the given decimal number: ",absolute)

Output:

Value 1:  -122.2000000000000028421709430404007434844970703125
Absolute value of the given decimal number:  122.2000000000000028421709430404007434844970703125

6. Max and Min functions

The Python decimal module contains the following functions to calculate the minimum and maximum values of the decimal point numbers.

  • min() function: Returns the minimum of the two decimal values.
  • max() function: Returns the maximum of the two decimal values.
#Syntax for min() function-
decimal1.min(decimal2)

#Syntax for max() function-
decimal1.max(decimal2)

Example:

import decimal as d

valx = d.Decimal(122.20)
valy = d.Decimal(123.01)

print("Value 1: ",valx)
print("Value 2: ",valy)

min_val = valx.min(valy)
print("The minimum of the two values: ",min_val)

max_val = valx.max(valy)
print("The maximum of the two values: ",max_val)


Output:

Value 1:  122.2000000000000028421709430404007434844970703125
Value 2:  123.0100000000000051159076974727213382720947265625
The minimum of the two values:  122.2000000000000028421709430
The maximum of the two values:  123.0100000000000051159076975

7. Logical operations with decimal module

Decimal module contains a set of in-built functions to perform logical operations on the decimal numbers such as AND, OR, XOR, etc.

  • logical_and() function: It performs logical AND operation on the two decimal numbers and returns the result.
  • logical_or() function: It performs logical OR operation on the two decimal numbers and returns the result.
  • logical_xor() function: It performs logical XOR operation on the two decimal numbers and returns the result.
#Syntax for logical_and() function-
decimal1.logical_and(decimal2)

#Syntax for logical_or() function-
decimal1.logical_or(decimal2)

#Syntax for logical_xor() function-
decimal1.logical_xor(decimal2)

Example:

import decimal as d

valx = d.Decimal(1001)
valy = d.Decimal(1111)

print("Value 1: ",valx)
print("Value 2: ",valy)

AND = valx.logical_and(valy)
print("The logical AND value of the two decimals: ",AND)

OR = valx.logical_or(valy)
print("The logical OR value of the two decimals: ",OR)

XOR = valx.logical_xor(valy)
print("The logical XOR value of the two decimals: ",XOR)


Output:

Value 1:  1001
Value 2:  1111
The logical AND value of the two decimals:  1001
The logical OR value of the two decimals:  1111
The logical XOR value of the two decimals:  110

Conclusion

By this, we have come to the end of this topic. Feel free to comment below, in case you come across any question.

Till then, Happy Learning!!


References

  • Understanding Python decimal module — JournalDev