记录一下浮点数精度设置的几种方法
1. round方式
内置函数,四舍五入,但是和我们一般理解意义上的四舍五入不太一样,先看下使用姿势
1 | round(digit, num) |
第一个参数是浮点数,第二个参数标识保留的小数个数,第二个参数不传时,标识保留0个小数
接下来看下为什么说这个方法和传统的四舍五入不一样
一般的四舍五入实现是 (a + 0.5) 然后取整;但是我们这里却不是这样的
其规则如下:
- 碰到舍入的后一位为5的情况,如果要取舍的位数前的数是偶数,则直接舍弃,如果奇数这向上取舍
2. 字符串格式化
使用字符串的格式化方式来间接实现我们希望的效果
1 | "%.xf" % digit |
其中 x
表示具体需要保留的小数位数,digit
表示需要格式化的浮点数,它的实现效果和round一样
3. math.ceil与math.floor
对于精度的设置,一般除了四舍五入之外,还有几种常见的就是向上,向下取整,因此 ceil
和 floor
就比较合适了
1 | from math import ceil, floor |
4. decimal 精度
如果对精度要求比较高,可以考虑使用decimal来操作
1 | from decimal import * |
注意上面的precision并不是表示保留多少位小数,而是最终的返回的“有效数字”个数(有效数字打引号,注意不是数学上的有效数字)
II. 其他
1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog
知识星球