数字的四舍五入

问题

你想对浮点数执行指定精度的舍入运算。

解法

对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可。比如:

>>> round(1.23, 1)
1.2
>>> round(1.27, 1)
1.3
>>> round(-1.27, 1)
-1.3
>>> round(1.25361,3)
1.254
>>>

当一个值刚好在两个边界的中间的时候, round 函数返回离它最近的偶数。也就是说,对 1.5 或者 2.5 的舍入运算都会得到 2。

传给 round() 函数的 ndigits 参数可以是负数,这种情况下,舍入运算会作用在十位、百位、千位等上面。比如:

>>> a = 1627731
>>> round(a, -1)
1627730
>>> round(a, -2)
1627700
>>> round(a, -3)
1628000
>>>

讨论

不要将舍入和格式化输出搞混淆了。如果你的目的只是简单的输出一定宽度的数,你不需要使用 round() 函数。而仅仅只需要在格式化的时候指定精度即可。比如:

>>> x = 1.23456
>>> format(x, '0.2f')
'1.23'
>>> format(x, '0.3f')
'1.235'
>>> 'value is {:0.3f}'.format(x)
'value is 1.235'
>>>

同样,不要试着去舍入浮点值来” 修正” 表面上看起来正确的问题。比如,你可能倾向于这样做:

>>> a = 2.1
>>> b = 4.2
>>> c = a + b
>>> c
6.300000000000001
>>> c = round(c, 2) # "Fix" result (???)
>>> c
6.3
>>>

对于大多数使用到浮点的程序,没有必要也不推荐这样做。尽管在计算的时候会有一点点小的误差,但是这些小的误差是能被理解与容忍的。如果不能允许这样的小误差 (比如涉及到金融领域),那么就得考虑使用 decimal 模块了。

《Python Cookbook 3rd》笔记(3.1):数字的四舍五入相关推荐

  1. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  2. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  3. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  4. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  5. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  6. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  7. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  8. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

  9. 《Python Cookbook 3rd》笔记(3.3):数字的格式化输出

    数字的格式化输出 问题 你需要将数字格式化后输出,并控制数字的位数.对齐.千位分隔符和其他的细节. 解法 格式化输出单个数字的时候,可以使用内置的 format() 函数,比如: >>&g ...

最新文章

  1. [LeetCode系列]最大连续子列递归求解分析
  2. MPLS 企业组网有哪些特性?——Vecloud
  3. FCOS: A Simple and Strong Anchor-free Object Detector
  4. linux mysql revoke_Linux环境下MySQL基础命令(4)----数据库的用户授权
  5. Centos6.5 源码安装MySql5.6.33
  6. 投屏电视显示服务器拒绝,投屏投不上去怎么办?投屏方法汇总,总有一种适合你!...
  7. google手机连接wifi后提示“无法连接互联网“的原因和解决方法
  8. linux memery dump
  9. 苹果无法安装app_APP做了ios企业签名后无法安装?原因有这些
  10. js:聚焦和失焦事件示例
  11. 关于最近很火的Python圣诞树
  12. fiddler图片替换
  13. 创业者应具备的素质和条件
  14. 多用户博客BLOG系统大全
  15. 第四届世界互联网大会人工智能论坛:AI让生活更美好
  16. 10个最好用的在线配色网站推荐
  17. 在 Mac 上显示或隐藏文件扩展名
  18. Direct3D渲染管线
  19. W520 改造通电自动开机
  20. 计算机闹铃音乐在线听,电脑闹钟提醒(Free Alarm Clock)

热门文章

  1. Wince6.0 cleartype
  2. php公交查询系统源代码,基于Smarty公交查询系统的设计与实现(PHP,MySQL)
  3. Oracle客户端与java_Oracle 谈 JavaFX 及 Java 客户端技术的未来
  4. 【转】Ubuntu下使用sysv-rc-conf管理服务
  5. [你必须知道的.NET]第三十四回,object成员,不见了!
  6. 【转】ELK是什么能做什么怎么做
  7. ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!
  8. imp命令导入指定表_Oracle—— 导入/导出 数据:exp,imp 命令
  9. Python3 爬虫实战 — 模拟登陆哔哩哔哩【滑动验证码对抗】
  10. 【蓝桥杯官网试题 - 算法提高 】求最大值 (dp,0-1背包)