python 四舍五入进位不准
python中四舍五入进位不准,自己写了个方法结果:
def new_round(_float, _len):
'''
四舍五入保留小数位,如果想实现 0.2 显示为 0.20,可使用 '%.2f' % num 实现
:param _float:
:param _len: 保留的小数位
:return:
'''
_float=float(_float)
if len(str(_float).split('.')[1])<= _len:
return round(_float, _len)
elif str(_float)[-1] == '':
return round(float(str(_float)[:-1] + ''), _len)
else:
return round(_float, _len)
print('-0.1535' , '=', new_round(-0.15355, 2))
print('-0.2500', '=', new_round(-0.2500, 2))
print('0.453', '=', new_round(0.453, 2))
print('0.5500', '=', new_round(0.5500, 2))
# 如果想实现 0.2 显示为 0.20,可使用 '%.2f' % num 实现
print('291.818500', '=', '%.5f' % new_round(291.818500, 5))
输出:
-0.1535 = -0.15
-0.2500 = -0.25
0.453 = 0.45
0.5500 = 0.55
291.818500 = 291.81850
# 处理科学计算法记录的数据 如:1.23333e-5
import math
n = 10
demical_num = 7 #需要保留的小数位数
data_value = 0.0001/3 #需要保留的小数
print(data_value) # 输出3.3333333333333335e-05
decimal_digit = '%.'+str(demical_num)+'f'
for i in range(demical_num+1):
n = n*10
if float(data_value) < 0:
data_value1 = math.ceil(float(data_value) * n)
else:
data_value1 = math.floor(float(data_value) * n)
data_value2 = data_value1/n
decimal_data = decimal_digit % new_round(float(data_value2), demical_num)
print(decimal_data) # 输出 0.0000033
python 四舍五入进位不准的更多相关文章
- Codeforces Round #373 (Div. 2) A B C 水 贪心 模拟(四舍五入进位)
A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ...
- python 使用demical模块四舍五入
前言: 断言部分需要用到四舍五入,首先使用的是python自带的round(),做四舍五入进位处理,但使用过程中,发现round似乎是当保留小数位的最后一位是偶数,和保留小数位后一位为5时,就不进位. ...
- [Python]round四舍五入精度缺失的解决
环境: os: win7 64bit python:2.7.5 32bit 对python四舍五入的解决方案 现象: 一般的四舍五入操作都是使用内置的round方法 In [14]: round ...
- python数据精度问题
一.python运算时精度问题: 1.运行时精度问题在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和十进制之间对应问题会导致数值的精度问题,比如无法用有限个 ...
- Jinja2学习笔记暨官方文档的翻译
http://blog.csdn.net/lgg201/article/details/4647471 呵呵, 刚刚看完Python模板引擎Jinja2的文档, 感觉很好, 觉得动态语言真是很好. ...
- oracle数据库中的基本语句
下面的都是最基本的oracle数据库的数据查询语句,这是我在网上整理的一份文档,方便以后自己的查看,当然,能把这些记下来就是最好的. 说明:查询表中的数据 1. select * from emp; ...
- Oracle 经典SQL 专为笔试准备
相信把这99条sql搞定,Oracle基本笔试简直就像玩的一样(史上最全,最经典的入门级Oracle查询语句) 1. select * from emp; 2. select empno, ename ...
- oracle数据库常用的99条查询语句(转载)
1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...
- jinja2模板常用方法
数学运算+,-,*,/,**,//,%等数学运算符都支持. 逻辑运算and,or,not也同样支持 1.in判断元素是否在集合中 2.|管道操作符,默认使用Apply调用一个方法 3.~字符串连接 4 ...
随机推荐
- request.getAttribute()和request.getParameter()两个方法的区别
request.getAttribute()获得的数据必须曾经有过setAttibute()过: 而request.getParameter()获得是客户端POST或者GET请求时所携带的参数的值 g ...
- Spring理解?
(1)Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架,是解决企业应用开发的复杂性,为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合. (2)Sp ...
- jpa hibernate mybatis
jpa: entityManagerFactory: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean hibern ...
- 数据加密之AES
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- TCP定时器 之 连接建立定时器
当服务器收到新的syn请求,会回复syn+ack给请求端,若某时间内未收到请求端回复的ack,新建连接定时器超时执行回调,重传syn+ack,当超时超过固定次数时,该连接中止:本文主要分析其初始化流程 ...
- jenkins部署java项目
#########################################jenkins部署#################################3 一.jenkins是什么? J ...
- [flask_sqlalchemy ]插入数据时发生错误后如何处理
示例代码: def add_supplier(): form = request.form if request.method == 'POST': print(form) supplier = Su ...
- linux 下的快捷键操作
概述 今天发现自己码代码的效率有点低,所以查找了一下 linux 常用的快捷键操作,记录下来,供以后开发时参考,相信对其他人也有用. linux 终端常用快捷键 tab:补全命令 Ctrl + u:剪 ...
- Spring MVC三种返回方式
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. 下面一一进行说明: 1.ModelAndV ...
- Sar监控
sar 的命令格式为:sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ] [ -r ] [ -R ] [ -t ] ...