前言

众所周知,python中的round采取的是银行家舍入。而不是四舍五入。

# python中采取的规则是 《银行家式舍入法》
# 即 四舍六入五成双
# 详细解释见下
'''
四舍六入五考虑。
五后非零就进一,
五后皆零看奇偶,
五前为偶应舍去,
五前为奇要进一。
'''

实例讲解

Decimal('3.1349999999999997868371792719699442386627197265625')
round(3.135,2)
# 实际是 round(3.1349999....625,2)
# 第3位是4,故被舍去## 我们再来看些实例
>>> Decimal(3.165)
Decimal('3.16500000000000003552713678800500929355621337890625')
>>> round(3.165,2)
3.17
>>> Decimal(1.115)
Decimal('1.1149999999999999911182158029987476766109466552734375')
>>> round(1.115,2)
1.11

自定义实现


# from decimal import *def getDecimal(num, n):'''这是一个符合人类思维的四舍五入函数,所有没有引入Decimal。'''if n < 0:# 抛出异常raise Exception('the second param: n, must be bigger than zero!')elif n == 0:return int(num)num = (f"%.{n+1}f") % numpos = num.find('.')sub_pos = pos + n + 1  # 待判定位置flag = Falseif num[sub_pos] >= '5':flag = Truereturn num[:sub_pos-1] + chr(ord(num[sub_pos-1]) + 1) if flag else num[:sub_pos]if __name__ == '__main__':print(getDecimal(3.892, 2))print(getDecimal(3.135, 2))

运行结果:

【Python】原创 | 写一个符合人类思维的四舍五入函数(No round !!!)相关推荐

  1. python restful api_用Python语言写一个restful API

    本文主要向大家介绍了用Python语言写一个restful API,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. """ package.modul ...

  2. 30分钟用python+pyechart写一个近期深圳的疫情地点展示

    @[TOC]30分钟用python+pyechart写一个近期深圳的疫情地点展示 背景 最近(今天20220227),深圳的–疫--情–又严重起来了.深圳卫健委天天都有在发病例XX,居住XX,只看地址 ...

  3. 深入理解Promise并写一个符合Promise a+规范的Promise代码

    深入理解Promise并写一个符合Promise a+规范的Promise代码 关于Promise函数可以参考我写的这篇文章https://www.cnblogs.com/qiaohong/p/770 ...

  4. Python来写一个童话故事

    Python来写一个童话故事 主题:冒险, 风格:惊险, 人物:男孩, 地点:海底. 循环遍历鱼列表中的每一条鱼 for fish in fishes:# 获取男孩和鱼的坐标和距离boy_x, boy ...

  5. python实现一个整数加法计算器_如何使用python编程写一个加法计算器-Python教程...

    一.关上idle.点击file,而后点击new file.这是创立一个新的文件. 新建一个文件之后,咱们输出第一行代码,应用print函数,正在屏幕上打印一句话,此中字符串要应用双引号,输出法要应用英 ...

  6. python自定义函数判断一个数是否大于0_Python_代码练习_写一个判断是否为小数的函数...

    这两天在学习函数,练习写一个判断是否为小数的函数,看起来蛮简单的,飞速写完很是得意,然后测了一下,发现差得好多呀,这个并不像想象那样简单,我得到的教训是,想要把一个需求哪怕再小的需求考虑周全,都不是件 ...

  7. Python之写一个函数用于字符串替换

    文章目录 写在开头的话 写一个函数用于字符串替换 题目 解析 写在最后的话: 这里是一段防爬虫文本,请读者忽略. 本文原创首发于CSDN,作者IDYS 博客首页:https://blog.csdn.n ...

  8. 用百行Python代码写一个关于德州扑克的类

    德州扑克是一款竞技类的扑克游戏,随着人类在各种竞技游戏被ai所碾压,我思考有着像棋类这种考验计算能力封闭式的游戏被电脑统治在所难免,德州扑克这种考验人性和心理的游戏在2017年也被ai攻克,本人是德州 ...

  9. python 在线预览文件_用Python PyQt写一个在线预览图片的GUI

    在爬完网上一篇帖子,并得到其中的所有图片链接后,写一个GUI来实现在线预览是一个很自然的想法, 相当于实现一个python版的图片浏览器, 通过这个练习,可以让我们更熟悉PyQt这个库. 这里我用的是 ...

最新文章

  1. 安装php ssh2扩展
  2. kafka-python 停止消费
  3. Docker学习笔记_安装和使用Apache
  4. [渝粤教育] 四川信息职业技术学院 高频电子技术 参考 资料
  5. iview-admin框架运行步骤
  6. Sx05RE-S905.arm-2.2.1
  7. 网际控制报文协议ICMP(Internet Control Message Protocol)(详解)
  8. 内含资源下载|久等了!阿里云技术天团15位专家总结双11实战经验
  9. linux简介及安装使用
  10. Nmap端口扫描windows版
  11. KiCad快速修改PCB线宽
  12. 计算机管理添加信任,iPhone怎么设置添加信任?苹果手机对电脑添加信任图文教程...
  13. Weighted Quick Union
  14. 华南理工大学函授计算机考试答案,函授大专考试试卷题型具体是怎样的
  15. C++书本综合实例(一)个人银行账户管理
  16. 同步通信和异步通信的爱恨情仇
  17. 振弦式应变计埋设与安装
  18. node内存溢出:JavaScript heap out of memory
  19. Python基于改进Unet的新冠肺炎等级分割系统(源码&教程)
  20. python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

热门文章

  1. 串行任务如何提高效率Java_具有相同属性任务串行有序执行的线程池设计
  2. python3.7安装pygal_pip和pygal的安装实例教程
  3. Linux学习笔记(三)|Vim编辑器
  4. 【效率】几个免费的富文本编辑器,这不完胜付费?
  5. 高等数学回顾.pptx
  6. ACM金牌导师1个月带你一起魔鬼刷爆算法题!
  7. 【CV】10分钟理解Focal loss数学原理与Pytorch代码
  8. 评价指标:目标检测的评价指标 - mAP
  9. 华人包揽CVPR 2019最佳论文,李飞飞ImageNet成就经典
  10. 负样本的艺术,再读Facebook双塔向量召回算法