python的内置函数 - round()

知识点1 - round() 定义/功能

round() 是一个用于四舍五入的内置函数。它可以将一个浮点数或整数四舍五入到指定的小数位数。

知识点2 - round() 语法

复制代码
round(number, ndigits=None)

number:需要四舍五入的数值(可以是整数或浮点数)。

ndigits(可选):指定四舍五入后保留的小数位数。如果不指定,则默认四舍五入到整数。

案例1

round() 函数在 Python 中遵循以下规则:

  • 如果小数部分大于等于 0.5,则向上舍入。

  • 如果小数部分小于 0.5,则向下舍入。

  • 对于负数,规则类似,但方向相反。

案例2

当小数部分正好是 0.5 时,round() 会采用"银行家舍入法"(Banker's Rounding),

即:

如果结果的整数部分是偶数,则向下舍入。

如果结果的整数部分是奇数,则向上舍入。

案例3

关键点小结:
  1. 当指定的小数位数大于输入值的小数位数时,round() 函数不会对输入值进行四舍五入,而是直接返回输入值。

  2. 如果输入值的精度低于指定的小数位数,结果会保持原样,不足的小数位用 0 补齐(但 Python 不会显示多余的 0)。

  3. 对于负数,round() 的行为与正数相同,只是方向相反。

知识点3 - "银行家舍入法"(Banker's Rounding)

定义:

"银行家舍入法"(Banker's Rounding)是一种特殊的数值修约规则,又称为"四舍六入五取偶"或"四舍六入五留双"。它主要用于减少在大量数据处理中因四舍五入导致的累积误差,尤其适用于金融、统计和科学计算等领域。

银行家舍入法的基本规则

  1. 四舍:当需要舍弃的数字小于5时,直接舍去。

    • 例如:1.234 保留两位小数后为 1.23。
  2. 六入:当需要舍弃的数字大于5时,进位。

    • 例如:1.236 保留两位小数后为1.24。
  3. 五取偶:当需要舍弃的数字正好是5时,根据5前面的数字决定:

    • 如果5后面有非零数字,则进位。

      • 例如:1.2351 保留两位小数后为 1.24。
    • 如果5后面没有数字(或都是零),则:

      • 如果5前面的数字是偶数,则舍去5。

        • 例如:1.2450 保留两位小数后为 1.24。
      • 如果5前面的数字是奇数,则进位。

        • 例如:1.2350 保留两位小数后为 1.24。

知识点4 - 为什么采用"偶数舍去,奇数进位"?

在传统四舍五入中,当数字为.5 时,总是选择进位。例如:

  • 1.235 四舍五入后为 1.24

  • 1.245 四舍五入后为 1.25

这种规则会导致一个问题:向上舍入的概率比向下舍入的概率更高。因为 .5 总是向上舍入,这会在大量数据处理中引入正偏差,特别是在金融、统计和科学计算等需要高精度的场景中。

为了解决这个问题,银行家舍入法引入了"偶数舍去,奇数进位"的规则,目的是平衡向上舍入和向下舍入的概率

具体解释:

偶数舍去
  • 当 .5 前面的数字是偶数时,舍去.5,结果仍然是偶数。

  • 例如:1.245 保留两位小数后为 1.24。

  • 这种情况下,舍入后的结果不会改变数值的奇偶性。

奇数进位
  • 当 .5 前面的数字是奇数时,进位后结果变为偶数。

  • 例如:1.235 保留两位小数后为 1.24。

  • 这种情况下,舍入后的结果会改变数值的奇偶性。

为什么这样设计?

平衡舍入概率
  • 在大量数据中,数字的奇偶性是均匀分布的。通过"偶数舍去,奇数进位"的规则,向上舍入和向下舍入的概率大致相等,从而减少了舍入带来的累积误差。

减少系统性偏差
  • 传统四舍五入总是向上舍入 .5,会导致整体结果偏大。而银行家舍入法通过平衡舍入方向,使得整体结果更加接近真实值。

应用场景

  1. 金融领域:用于利息计算、货币兑换和财务报表修约,避免因舍入导致的系统性偏差。

  2. 科学计算:在统计和数据分析中,减少舍入对均值的影响。

  3. 编程语言:如 Python 的 round() 函数默认采用银行家舍入法

相关推荐
@HNUSTer25 分钟前
Python数据可视化科技图表绘制系列教程(八)
python·数据可视化·科技论文·专业制图·科研图表
专注仿真1 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
满怀冰雪2 小时前
22-使用 PaddleClas 快速训练图像分类模型
人工智能·python·机器学习·分类·数据挖掘·paddlepaddle
gb42152872 小时前
python中Web应用服务器
开发语言·前端·python
地平线开发者2 小时前
量化为什么会有损失:从量化误差到精度下降
算法
手写码匠3 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 会话管理与上下文工程实战:让智能体“记住该记住的,忘掉该忘掉的“
人工智能·深度学习·算法·aigc
2401_862880823 小时前
数据结构 --- 栈
c语言·数据结构·算法
致Great3 小时前
Qwen3.8-27B 接入 DSH 全流程实测:写代码、跑长任务,都没问题
算法
Tisfy4 小时前
LeetCode 3471.找出最大的几近缺失整数:三种情况判断
算法·leetcode·题解·分类讨论
reasonsummer4 小时前
【办公类-109-12】20260901圆形挂牌(模版重制:文本框圆形重叠_word编辑单面_接送卡&被子卡&床卡&入园卡)
python·word