python设置变量精度_190530-Python 浮点数精度设置的几种方式

记录一下浮点数精度设置的几种方法

1. round方式

内置函数,四舍五入,但是和我们一般理解意义上的四舍五入不太一样,先看下使用姿势

1round(digit, num)

第一个参数是浮点数,第二个参数标识保留的小数个数,第二个参数不传时,标识保留0个小数

接下来看下为什么说这个方法和传统的四舍五入不一样

一般的四舍五入实现是 (a + 0.5) 然后取整;但是我们这里却不是这样的

其规则如下:

碰到舍入的后一位为5的情况,如果要取舍的位数前的数是偶数,则直接舍弃,如果奇数这向上取舍

2. 字符串格式化

使用字符串的格式化方式来间接实现我们希望的效果

1"%.xf" % digit

其中 x 表示具体需要保留的小数位数,digit 表示需要格式化的浮点数,它的实现效果和round一样

3. math.ceil与math.floor

对于精度的设置,一般除了四舍五入之外,还有几种常见的就是向上,向下取整,因此 ceil 和 floor 就比较合适了

1

2

3

4

5

6

7

8

9

10

11from math import ceil, floor

# ceil 向上取整

ceil(1.2)

ceil(-1.2)

ceil(1.0)

# floor 向下取整

floor(1.2)

floor(-1.2)

floor(1.0)

4. decimal 精度

如果对精度要求比较高,可以考虑使用decimal来操作

1

2

3

4

5

6

7

8from decimal import *

def floatAdd(num1, num2, precision=2):

getcontext().prec = precision # 设置精度

return float(Decimal(str(num1)) + Decimal(str(num2)))

print(floatAdd(1.234567, 5.312, 4))

print(float(Decimal(str(12345.67)) + Decimal(str(125.1))))

注意上面的precision并不是表示保留多少位小数,而是最终的返回的“有效数字”个数(有效数字打引号,注意不是数学上的有效数字)

II. 其他

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

QQ: 一灰灰/3302797840

3. 扫描关注

一灰灰blog

知识星球

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值