SoFunction
Updated on 2025-04-14

Share practical tips for handling floating point numbers in Python

Rounding is a common mathematical operation that is used to round numbers to a specified precision. Python provides a variety of ways to implement rounding operations, from basic round functions to advanced decimal modules to meet different needs. This article will introduce these methods in detail and provide specific example code to help you fully master the skills of rounding operations in Python.

Rounding using round function

The round function is the most basic rounding method in Python. It can round a number to the specified number of digits.

Basic usage

The basic syntax of the round function is as follows:

round(number, ndigits)

number: The number to be rounded.

ndigits: Specifies the number of digits rounded to the decimal point. If this parameter is omitted, the default is rounded to an integer.

# Round to integerprint(round(3.14159))  # Output: 3 
# Round to two decimal placesprint(round(3.14159, 2))  # Output: 3.14 
# Round to one after the decimal pointprint(round(2.675, 2))  # Output: 2.67

In this example, the round function rounds the number 3.14159 to two digits after the integer and decimal points. In addition, a common trap in rounding operations is shown, and the result of round(2.675, 2) is 2.67, rather than the expected 2.68, which is due to floating point accuracy issues.

Rounding with math module

The math module provides some functions for mathematical operations, including and , which can be used to implement down and up rounding.

Round down

Functions are used to round down the number, that is, take the maximum integer not greater than the number.

import math
 
print((3.7))  # Output: 3print((-3.7))  # Output: -4

Round upward

Functions are used to round up the number, that is, take the smallest integer not less than the number.

import math
 
print((3.3))  # Output: 4print((-3.3))  # Output: -3

Use the decimal module for accurate rounding

The decimal module provides support for decimal fixed points and floating point numbers, allowing for more precise rounding operations. It is ideal for handling financial and monetary calculations.

Basic usage

First, you need to import the decimal module and then create a Decimal object for operations.

from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN
 
# Create a Decimal objectnum = Decimal('2.675')
 
# Round to two decimal places, adopt the ROUND_HALF_UP strategyrounded_num = (Decimal('0.01'), rounding=ROUND_HALF_UP)
print(rounded_num)  # Output: 2.68 
# Round to two decimal places, adopt the ROUND_HALF_EVEN strategyrounded_num = (Decimal('0.01'), rounding=ROUND_HALF_EVEN)
print(rounded_num)  # Output: 2.67

In this example, the Decimal object provides higher precision and can control the behavior of rounding by specifying a rounding policy.

Common rounding strategies include ROUND_HALF_UP (rounding) and ROUND_HALF_EVEN (banker rounding method).

Rounding with numpy module

numpy is a library for scientific computing that provides powerful array manipulation capabilities. numpy also provides functions for rounding.

Basic usage

Functions can round each element in an array.

import numpy as np
 
# Create an arrayarr = ([3.14159, 2.675, 3.5])
 
# Round to integerrounded_arr = (arr)
print(rounded_arr)  # Output: [3. 3. 4.] 
# Round to two decimal placesrounded_arr = (arr, 2)
print(rounded_arr)  # Output: [3.14 2.67 3.5]

In this example, the function rounds each element in the array.

Custom rounding function

In some cases, custom rounding behavior may be required. You can write a custom function to implement this function.

def custom_round(number, ndigits=0):
    factor = 10 ** ndigits
    return int(number * factor + 0.5 if number >= 0 else number * factor - 0.5) / factor
 
print(custom_round(2.675, 2))  # Output: 2.68print(custom_round(3.14159, 3))  # Output: 3.142print(custom_round(-3.14159, 2))  # Output: -3.14

In this example, the custom_round function implements a custom rounding operation by adjusting the multiplier and divisor.

Rounding in practical applications

Financial computing

In financial calculations, rounding is often used to process monetary amounts to ensure the results have the correct accuracy. For example, when calculating interest, taxes, or discounts, the result needs to be rounded to the nearest quantile or other specified accuracy.

Suppose you need to calculate deposit interest and round the result to the nearest quantile.

from decimal import Decimal, ROUND_HALF_UP
 
def calculate_interest(principal, rate, time):
    interest = principal * (rate / 100) * time
    interest = Decimal(interest).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
    return interest
 
principal = 1000.0  #Principalrate = 3.75  # Annual interest ratetime = 1  # Time (year) 
interest = calculate_interest(principal, rate, time)
print(f"Interest:{interest} Yuan")  # Output: Interest: 37.50 yuan

In this example, the calculation is rounded to two decimal places using and ROUND_HALF_UP to indicate the correct currency amount.

Data processing and analysis

During data processing and analysis, rounding can be used to format data results for easy display and further calculation. For example, in statistical calculations, it may be necessary to round the mean, standard deviation and other results to the specified accuracy.

Suppose you need to calculate the average value of a set of data and round the result to two decimal places.

import numpy as np
 
def calculate_average(data):
    average = (data)
    return round(average, 2)
 
data = [2.678, 3.456, 4.789, 5.123, 3.876]
 
average = calculate_average(data)
print(f"average value:{average}")  # Output: Average: 4.00

In this example, we use numpy to calculate the average of the data and round the result to two decimal places using the round function.

Scientific computing

In scientific calculations, rounding is used to control the accuracy of the calculation results to avoid excessive decimal places affecting the readability and significance of the results. For example, in a physical calculation, it may be necessary to round the result to the appropriate number of significant digits.

Suppose you need to calculate the velocity of the object and round the result to three significant digits.

from decimal import Decimal, ROUND_HALF_UP
 
def calculate_speed(distance, time):
    speed = distance / time
    speed = Decimal(speed).quantize(Decimal('0.001'), rounding=ROUND_HALF_UP)
    return speed
 
distance = 123.456  # Distance (meters)time = 12.34  # Time (seconds) 
speed = calculate_speed(distance, time)
print(f"speed:{speed} rice/Second")  # Output: Speed: 10.005 m/s

In this example, the calculation result is rounded to three significant digits using and ROUND_HALF_UP to obtain a more accurate physical quantity.

Report generation

When generating reports, rounding can be used to format the results to specified precision for easy reading and understanding. For example, when generating a financial or statistical report, you may need to round the numbers to the appropriate number of digits.

Suppose you need to generate a simple financial report and round all amounts to two decimal places.

from decimal import Decimal, ROUND_HALF_UP
 
def format_amount(amount):
    return Decimal(amount).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
 
data = {
    'income': 123456.789,
    'expenditure': 98765.432,
    'Net Profit': 24691.357
}
 
formatted_data = {k: format_amount(v) for k, v in ()}
 
print("Financial Report")
for item, amount in formatted_data.items():
    print(f"{item}:{amount} Yuan")

In this example, and ROUND_HALF_UP are used to round financial data to two decimal places and generate a formatted report.

Temperature conversion

In practical applications, temperature conversion is a common scenario. We may need to convert Celsius to Fahrenheit, or in turn, and round the results to the appropriate accuracy.

Suppose you need to convert Celsius to Fahrenheit and round the result to a decimal.

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32
    return round(fahrenheit, 1)
 
celsius = 36.6
fahrenheit = celsius_to_fahrenheit(celsius)
print(f"{celsius} Degrees of Celsius = {fahrenheit} Fahrenheit")  # Output: 36.6 degrees Celsius = 97.9 degrees Fahrenheit

In this example, the round function is used to round the conversion result to a decimal.

Summarize

This article details a variety of ways to implement rounding in Python, including using round functions, math modules, decimal modules, numpy modules, and custom rounding functions. The use of these methods in different application scenarios, such as financial computing, data processing and analysis, scientific computing, report generation and temperature conversion, is demonstrated through specific example code. Mastering these skills can enable data processing and analysis to be more efficient in actual work, improving the accuracy of calculations and the reliability of results.

This is the article shared on Python’s practical skills for processing floating point numbers. For more related content on Python’s floating point numbers, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!