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 Django做网页
Nov 04 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 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在字符断点处截断文字的实现代码
2011/04/21 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
微信小程序实现点击效果
2019/06/21 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
使用Python求解最大公约数的实现方法
2015/08/20 Python
python交互式图形编程实例(一)
2017/11/17 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python爬取个性签名的方法
2018/06/17 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
工作表现自我评价
2014/02/08 职场文书
党员干部公开承诺书
2014/03/26 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
罚款通知怎么写
2015/04/22 职场文书
大学生创业计划书
2019/06/24 职场文书