栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 有什么不为人知的坑?关于python里的round函数的四舍五入问题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 有什么不为人知的坑?关于python里的round函数的四舍五入问题

看了一圈高赞回答,居然没人提这个。

大家都知道,round()是用来四舍五入的。

但是,有特殊情况:

​

发现问题了吗?

  • 7.55保留一位小数,按四舍五入,应该得7.6,却得到7.5

  • 1.315保留两位小数,按四舍五入,应该的1.32,却得到1.31

因为,Python遵循的不是四舍五入,而是“四舍六入五成双”

Python官方文档:

round介绍:内置函数 — Python 3.10.5 文档

浮点算术的争议和限制:15. 浮点算术:争议和限制 - Python 3.10.5 文档

​

为此,我专门写了一个函数,修复此问题(如果算作是问题):

def new_round(v_value, ndigits=1):
	"""
	修复python四舍五入问题
	:param ndigits: 保留几位小数
	:param v_value: 输入数值
	:return: 输出数值
	"""
	f = int(v_value) % 10
	if f <= 4:
		v_value = (int(v_value) // 10) / 10
	else:
		v_value = (int(v_value) // 10 + 1) / 10
	print(v_value)
	return v_value

暂且不论它算不算Python的bug,但你一定要知晓这个事。

别让你的程序,由于它,计算出错误结果,自己却浑然不知!

到那个时候,就算不是python的bug,也是你的程序bug了!!

Python 有什么不为人知的坑? - 知乎 | 马哥python说


我是马哥,全网累计粉丝上万,欢迎一起交流python技术。

各平台搜索“马哥python说”:知乎、哔哩哔哩、小红书、新浪微博。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号