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实现多线程采集的2个代码例子
Jul 07 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python中的测试框架
Nov 13 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
python 实现汉诺塔游戏
Nov 28 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
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
深入理解vuex2.0 之 modules
2017/11/20 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
python创建列表并给列表赋初始值的方法
2015/07/28 Python
python生成器表达式和列表解析
2016/03/10 Python
Python打印输出数组中全部元素
2018/03/13 Python
老生常谈python中的重载
2018/11/11 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
python可视化实现KNN算法
2019/10/16 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
趣味运动会策划方案
2014/06/02 职场文书
服装设计专业求职信
2014/06/16 职场文书
天地会口号
2014/06/17 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python