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中的对象,方法,类,实例,函数用法分析
Jan 15 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
python添加模块搜索路径方法
Sep 11 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
Python列表元素常见操作简单示例
Oct 25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
python爬虫工具例举说明
Nov 30 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php限制文件下载速度的代码
2015/10/20 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
计划生育工作汇报
2014/10/28 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
心灵点滴观后感
2015/06/02 职场文书
大学新生入学感想
2015/08/07 职场文书
小学教师教学随笔
2015/08/14 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python