Python round() 函数详解与实战示例
Python round() 函数详解
round() 内置函数是 Python 数值处理的常用工具。它将数值四舍五入到指定小数位数,未提供精度时默认返回最接近的整数。
语法
round(number, ndigits=None)
- number – 要四舍五入的数值。
- ndigits – 可选;保留的小数位数。省略时返回整数。
返回值
省略 ndigits 时返回 int;提供时返回四舍五入到该精度的 float。
四舍五入规则
- 目标位后一位数字 ≥ 5 时进位。
- 目标位后一位数字 < 5 时截断。
为什么四舍五入很重要:真实案例
在金融市场,四舍五入可能影响数百万美元交易。例如 1982 年温哥华证券交易所将交易价格截断到三位小数,导致每月累计损失约 25 点。改用四舍五入能大幅减少偏差。
# 示例:截断 vs 四舍五入
import random
def truncate(num):
return int(num * 1000) / 1000
arr = [random.uniform(0.01, 0.05) for _ in range(1_000_000)]
# 截断求和
sum_truncate = 0
for val in arr:
sum_truncate = truncate(sum_truncate + val)
# 四舍五入求和
sum_round = 0
for val in arr:
sum_round = round(sum_round + val, 3)
print("Truncated sum:", sum_truncate)
print("Rounded sum:", sum_round)
截断总和可能偏离数百单位,而四舍五入偏差仅几分之一单位。
常见用例
浮点数四舍五入
# 基础四舍五入 print(round(10.60)) # 11 print(round(10.40)) # 10 print(round(10.3456, 2)) # 10.35 print(round(10.3445, 2)) # 10.34
整数四舍五入
print(round(15)) # 15
负数四舍五入
print(round(-2.8)) # -3 print(round(-1.5)) # -2
NumPy 数组四舍五入
import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] print(np.round(arr, 2)) # [-0.34 1.46 4.23 -0.34 7.63 5.12]
使用 Decimal 模块实现高精度控制
decimal 模块提供更精细的舍入模式控制。
import decimal
num = decimal.Decimal('15.456')
print(num.quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)) # 15.46
核心要点
- 用
round(number, ndigits)进行标准四舍五入。 - 省略
ndigits返回整数;提供则返回浮点数。 - 关键金融或科学计算建议用
decimal确保确定性舍入。
Python
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 函数详解:从声明到调用的实战指南
- Python Lambda匿名函数实战指南
- Python 生成器:高效迭代与进阶用例
- Python 闭包详解:嵌套函数如何捕获变量
- 精通 Python 装饰器:专家技巧增强函数
- Python print() 函数完全指南:基础用法、空行打印与自定义结束符
- Python strip() 方法完全指南:去除首尾空白与自定义字符实战
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python format() 字符串格式化完全指南:占位符、格式化规范、类与字典应用
- Python 字符串 find() 方法完全指南:语法、参数、替代方案与计数技巧
- 精通 Python Lambda 函数:实用示例与最佳实践