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函数转换成字符串,可以指定保留小数位数,保留规则为四舍五入
相关文章
|
9月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
495 2
|
9月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
1564 1
|
9月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
412 0
|
10月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
383 101
|
10月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
314 99
|
10月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
551 98
|
10月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
11月前
|
Python
Python 函数定义
Python 函数定义
939 155
|
12月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
772 0
|
12月前
|
索引 Python 容器
[oeasy]python096_列表_计数函数_count
本教程详细介绍了Python中列表的计数方法`count`,包括其基本用法、与`len`函数的区别,以及如何结合索引操作查找和删除特定元素。同时探讨了字符串对象的`count`方法,并通过实例演示了如何统计字符出现次数。
262 7

推荐镜像

更多