python 正确保留多位小数的实例


Posted in Python onJuly 16, 2018

python自带的float函数在保留两位小数的时候不够准确容易出现误差,而(‘%.2f' % a)的方式是将数字转成了字符串类型,无法进行数字运算,所以这里我们将封装一个方法来实现正确的保留多位小数。

from functools import reduce
def str2float(strf):
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
def char2int(x, y):
return 10 * x + y
tstr = strf.split('.')
hightre = reduce(char2int, map(char2num, tstr[0]))
if len(tstr)>1:
lowre = reduce(char2int, map(char2num, tstr[1]))*(0.1**len(tstr[1]))
else:
lowre = 0
return hightre + lowre

从上述代码我们引用了reduce函数(python2.7不需要导入)配合map内置函数来实现;

char2num函数主要是将字符串类似转为对应的数字类型;

char2int函数实现左侧的数字乘以10后加上右侧数字,比如char2int(1,2)-> 12;

tstr是将高位数和低位数通过”.”隔开;

hightre是处理高位数,即非小数位部分,tstr[0]将左侧的数字通过char2num函数转成数字类型,作为单个单个的数字,如(”123.456”)将小数点左侧的部分转为(1,2,3),通过char2int函数转为(((110+2)10)+3) -> 123;

lowre是处理低位数,即小数位部分,tstr[1]将右侧的数字通过char2num函数转成数字类型,作为单个单个的数字,如(”123.456”)将小数点右侧的部分转为(4,5,6),通过char2int函数转为(((410+5)10)+6) -> 456,由于是小数位所以要乘以0.1的N次方(N=小数位的位数),(456(0.10.1*0.1)) -> 0.456;

最后返回高位数拼接低位数,即123.456的浮点类型;

PS:经过试验发现,使用该方法最多可支持12位数字,即高位数和低位数总位数在12位以内可以正常显示;

以上这篇python 正确保留多位小数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现一个简单的线程池
Apr 07 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python使用opencv读取图片的实例
Aug 17 Python
Python实现句子翻译功能
Nov 14 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
Python 动态变量名定义与调用方法
Feb 09 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
浅谈Python里面小数点精度的控制
Jul 16 #Python
详解Django中间件执行顺序
Jul 16 #Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 #Python
python 不以科学计数法输出的方法
Jul 16 #Python
Django配置celery(非djcelery)执行异步任务和定时任务
Jul 16 #Python
Python中的Django基本命令实例详解
Jul 15 #Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 #Python
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
常用的php ADODB使用方法集锦
2008/03/25 PHP
php编写简单的文章发布程序
2015/06/18 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
员工晚婚的请假条
2014/02/08 职场文书
端午节活动策划方案
2014/03/09 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
民主评议党员工作总结
2014/10/20 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
Redis命令处理过程源码解析
2022/02/12 Redis