python round()函数保留小数位数的详细用法及round函数的坑

简介: python round()函数保留小数位数的详细用法及round函数的坑
round(number[, ndigits])
返回number舍入到小数点后ndigits为精度的值,如果ndigits被省略则会返回最接近输入值的整数

强调:round()的舍入规则不是四舍五入
强调:round()的舍入规则不是四舍五入
强调:round()的舍入规则不是四舍五入

舍入的规则

**官方定义**:结果值会舍入至最接近的 10 的负 ndigits 次幂的倍数;如果与两个倍数同样接近,则选用偶数。

有点不好理解,换一种理解方式
结果值 = 与number 最接近的拥有ndigits位小数的小数 。如果距离相等,则选择小数点第ndigits位是偶数的小数

  • 如果不填ndigits 则保留整数部分 当出现距离相等的情况,则看整数末尾,最后结果靠近整数末尾是偶数的

round(number)
number在[1.5,2.5] 的值结果为2 1.5距离1和距离2相等,2是偶数所以结果是2,2.5距离2和距离3相等,2是偶数所以结果是2
number在 (2.5,3.5) 的值结果为3 在这个范围中的距离3最近所以结果为3
number=3.5 保留结果为4(3.5距离3和距离4都为0.5 因为4是偶数,所以最后的结果是4)
在这里插入图片描述
特别注意:round(0.5) 和 round(-0.5) 均得出 0

  • 如果有指定的ndigit值,则会保留对应的小数位方法和整数的相同
  • 结果值等于和原值小数最接近的拥有ndigits位小数的值,如果距离相等选择小数点第ndigits位是偶数的值
a = 2.465 # 舍入后 2.46     # 距离2.46和2.47一样近,2.46的末尾小数为偶数,则结果为2.46
b = 2.4651  # 舍入后 2.47   # 距离2.47较近
print(round(a,2))
print(round(b,2))

a = 2.464 # 舍入后 2.46   # 距离2.46最近
b = 2.467  # 舍入后 2.47  # 距离2,47最近
print(round(a,2))
print(round(b,2))

round()函数的坑

官方文档的例子

对浮点数执行 round() 的行为可能会令人惊讶:例如,round(2.675, 2) 将给出 2.67 而不是期望的 2.68。
这不算是程序错误:这一结果是由于大多数十进制小数实际上都不能以浮点数精确地表示。

因为所有的数据在计算机中都以二进制的形式进行存储,从十进制转化为二进制的过成中,会有精度的损失。
2.675转换成二进制以后在计算机存储的机器数要小于2.675 所以会导致结果和预期值不一样

如果想要精确度比较高的

  • 使用模块 decimal

decimal可以调整小数点位数的进度

  • format函数转换成字符串,可以指定保留小数位数,保留规则为四舍五入
相关文章
|
2天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
3天前
|
数据采集 Python
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
|
3天前
|
数据采集 数据挖掘 Python
Python学习——函数,2024年最新手持4个大厂offer的我
Python学习——函数,2024年最新手持4个大厂offer的我
|
3天前
|
数据采集 数据挖掘 关系型数据库
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
|
3天前
|
存储 Java Shell
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
|
3天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
|
4天前
|
机器学习/深度学习 数据采集 自然语言处理
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
python函数参数的传递、带星号参数的传递,2024年大厂Python高级面试题分享
|
4天前
|
算法 Python
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
|
4天前
|
Python
Python 使用type()函数
【5月更文挑战第10天】
13 4
|
4天前
|
Python
Python使用isinstance()函数
【5月更文挑战第10天】Python使用isinstance()函数
9 2