numpy浮点转整数的精度损失问题

本文探讨了在numpy中浮点数转换为整数时可能出现的精度问题,导致预期结果与实际结果不符。例如,100.1在内部表示为100.09999999999999,转换为整数会变成0。为解决此问题,建议引入误差或使用条件判断来确保取整的准确性。
摘要由CSDN通过智能技术生成

在numpy数组使用时发现了浮点数转整数可能会产生错误的问题,目前采用引入误差方式解决。

1、问题代码:

e = 0
points = np.array([[100.10, 40.20],
                   [100.30, 40.60],
                   [100.20, 40.70]])
lons = points[:, 0] - 100.0 + e
lats = points[:, 1] - 40.0 + e

lons = (lons/0.1)
lats = (lats/0.1)

lons = lons.astype(int)
lats = lats.astype(int)
print lons
print lats

预期结果为:[1, 3, 2]   [2, 6, 7]                      实际结果为:[0, 2, 2]  [2, 6, 7]

通过调试发现:100.10实际数据内容为100.09999999999999

在进行减法运算之后,数据实际内容进一步发生变化:

取整数之前数据实际值:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值