Python中关于浮点数的一些问题

最近在Python学习中遇到一些关于浮点数不准确的问题,记录一下。

 

1.一般使用np.linspace()

import numpy as np
a = np.linspace(0.0, 1.0, 11)
print(a)
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]

 

2.而我在循环打印时出现以下问题:

>>>for i in a:
    print(i)
  
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
1.0

 其中会出现一些不准确的浮点数,经过简单查阅资料后,发现这是因为底层以有限的精度存储二进制浮点数。

也就是说,在Python关于浮点数的运算都会存在不准确的问题,在使用中应该尽量避免出现这种问题,特别是涉及到要求的精度比较高的时候,可以通过乘因子变为整数型,进行运算。

 

3.我的解决方案:

## 通过np.round控制浮点数位数

for i in np.round(a,3):
    print(i)
    
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0

 

另外在我设定的场景内,可以通过统一放大10倍,而不影响结果。这样就可以避免浮点数运算,也是一种解决方案。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值