当前位置: 首页 > news >正文

桂林北站到阳朔做微信的网站叫什么名字

桂林北站到阳朔,做微信的网站叫什么名字,免费收录链接网,运营商app下载本文主要分享基于python的数据分析三方库pandas#xff0c;numpy的一次爬坑经历#xff0c;发现并分析了python语言对于浮点数精度处理不准确的问题#xff0c;并在最后给出合理的解决方案。如果你也在用python处理数据#xff0c;建议看一下#xff0c;毕竟0.1的误差都可…本文主要分享基于python的数据分析三方库pandasnumpy的一次爬坑经历发现并分析了python语言对于浮点数精度处理不准确的问题并在最后给出合理的解决方案。如果你也在用python处理数据建议看一下毕竟0.1的误差都可能造成比较大的影响。问题出现早上到了公司领导发了几个文件过来说这两天测试环境跑出来的数据与实际情况有所出入看看哪出的问题尽快解决···开始排查先对比数据发现并不是所有的数据都出现问题只有10%左右的数据有这个问题说明应该不是逻辑上的问题初步判断可能为个别情况需要特殊处理考虑不周导致检查梳理各个运算模块用debug断点调试一波确定了数据出现偏差的模块通过单独测试这个单元模块最终确定涉及到两数相除结果为0.5(浮点数)的地方有问题预期结果np.round(0.5)1实际运算结果np.round(0.5)0于是我做了如下的试验# 基于python3.7版本 import numpy as np# 先看看 0 x 1 这个范围的结果发现有问题 np.round(0.50)0.0 np.round(0.51)1.0 np.round(0.49)0.0# 我担心是不是只有小数点为.5的都会呈现这种问题,所以测试了 x 1的结果发现还是有问题 np.round(1.5)2.0 np.round(2.5)2.0 np.round(3.5)4.0 np.round(4.5)4.0通过对比发现确实涉及到.5的值会有些和预想的不同看看啥原因分析问题确实发现了关于浮点数(.5出现了理解上的偏差)看看官方文档怎么解释这个现象numpy.around(a, decimals0, outNone)[source]Evenly round to the given number of decimals.# 对于恰好介于四舍五入的十进制值之间的中间值(.5)NumPy会四舍五入为最接近的偶数值。# 因此1.5和2.5四舍五入为2.0-0.5和0.5四舍五入为0.0依此类推。For values exactly halfway between rounded decimal values,NumPy rounds to the nearest even value.Thus 1.5 and 2.5 round to 2.0, -0.5 and 0.5 round to 0.0, etc.# np.around使用快速但有时不精确的算法来舍入浮点数据类型。# 对于正小数它等效于np.true_divide(np.rint(a * 10 **小数)10 **小数)# 由于IEEE浮点标准[1]和 十次方缩放时引入的错误np.around uses a fast but sometimes inexact algorithm to round floating-point datatypes.For positive decimals it is equivalent to np.true_divide(np.rint(a * 10**decimals), 10**decimals),which has error due to the inexact representation of decimal fractions in the IEEE floating point standard [1]and errors introduced when scaling by powers of ten其实也就是说对于带有.5这种刚好介于中间的值返回的是相邻的偶数值白话解释如果一个数字带有浮点数(.5)整数部分为偶数则返回这个偶数;整数部分奇数则返回这个奇数1的偶数规律解释如果整数部分能够整除2则返回整数部分;如果整数部分不能整除2则返回整数部分 1解决问题先不做任何改动看下数据误差的情形# 我们为了先看下现象,构造如下案例import pandas as pdimport numpy as npdf pd.DataFrame({num1: [1, 1, 1.5, 5, 7.5], num2: [2, 3, 1, 6, 3]})df[真实值] df[num1] / df[num2]# 看下round函数过后的结果df[偏差值] np.round(df[num1] / df[num2])原始结果图片如下不做处理期望值和偏差值不等的情况出现我的解决方案我根据我的精度要求构建精度范围所需要保留的小数点的最后一位通过这个数字是否为5判断是否需要向上取整举例来说本案例中我只需要保留整数部分的数据那么我只需要确定小数点后第一位是否是数字5就可以了上代码import pandas as pdimport numpy as npimport mathdf pd.DataFrame({除数: [1, 1, 1.5, 5, 7.5], 被除数: [2, 3, 1, 6, 3]})# 记录真实值df[真实值] df[除数] / df[被除数]# 记录整数部分df[辅助整数列] df[真实值].apply(lambda x: math.modf(x)[1])# 记录小数部分,因为我的最后结果精度为只保留整数部分,所以我只需要保留一个小数点位进行判断是否需要进位操作df[辅助小数列] df[真实值].apply(lambda x: str(math.modf(x)[0]).split(.)[1][0])# 小数点后的第一位是为5则向上取整不是5则调用原np.round就行了df[期望值修正] df.apply(lambda x: x.辅助整数列 1 if (x.辅助小数列 5) else np.round(x.真实值), axis1)结果如下所示以上就是python 四舍五入需要注意的地方的详细内容更多关于python 四舍五入的资料请关注我们其它相关文章本文标题: python 浮点数四舍五入需要注意的地方本文地址: http://www.cppcns.com/jiaoben/python/335383.html
http://www.yutouwan.com/news/408172/

相关文章:

  • 丰镇市网站丰镇高铁在哪个位置建设动感技术网站建设
  • 禹城建设局网站wordpress poetry
  • 电商网站的模式网站建设评价
  • 做直播网站软件有哪些软件下载网页版梦幻西游官网
  • 顺德装修网站建设网站的 规划与建设
  • 乌托邦网站建设网站的建设与运营
  • 重庆网站建设子沃科技wordpress 视频外链
  • 汽车行业网站建设比较好门店到什么地步可以做网站
  • 岳阳新网网站建设有限公司建立文档
  • 做图片详情网站青岛公司logo设计
  • 去哪里建设自己的网站?高端手机网站
  • 网站建设进度计划表有哪些做外贸的网站
  • 官方网站建设优化从零开始自己做外贸网站和海外网络营销
  • 重庆建设技术发展中心网站企业网络营销案例分析
  • php网站怎么做301跳转工程网站开发
  • 响应式网站开发用什么软件网络规划设计师和系统架构设计师
  • 网站开发实战演练保险网站排名
  • 上海网站制作广州网站制作公司电话
  • 网站广告推广技巧分享广东网站建设找
  • 网站套餐到期啥意思定西市小企业网站建设建设
  • 教学资源网站建设设计中国世界排名前200的大学名单
  • 新类型的网站推广渠道方案
  • 杭州公司的网站建设公司阿里巴巴网站如何做免费推广
  • 塘沽做网站比较好的珠海建网站多少钱
  • lamp网站开发经验wordpress 固定链接结构出错
  • 男女直接做那个视频网站网页设计教程书籍推荐
  • 做网站工作描述网站做平台有哪些
  • 辽宁市营商环境建设局网站wordpress图片主题演示
  • 安徽区块链虚拟币网站开发价格网站服务器内网打不开网页
  • h5案例网站工程建设管理网站源码