python 数字的四舍五入的问题
python3 以及python2.7 使用 round或者format进行浮点数的四舍五入问题
由于 python3
包括python2.7
以后的round策略使用的是decimal.ROUND_HALF_EVEN
即Round to nearest with ties going to nearest even integer. 也就是只有在整数部分是奇数的时候, 小数部分才逢5进1; 偶数时逢5舍去。 这有利于更好地保证数据的精确性, 并在实验数据处理中广为使用。
>>> round(2.55, 1) # 2是偶数,逢5舍去
2.5
>>> format(2.55, '.1f')
'2.5'>>> round(1.55, 1) # 1是奇数,逢5进1
1.6
>>> format(1.55, '.1f')
'1.6'
但如果一定要decimal.ROUND_05UP
即Round away from zero if last digit after rounding towards zero would have been 0 or 5; otherwise round towards zero. 也就是逢5必进1需要设置float
为decimal.Decimal
, 然后修改decimal的上下文
import decimal
from decimal import Decimal
context=decimal.getcontext() # 获取decimal现在的上下文
context.rounding = decimal.ROUND_05UPround(Decimal(2.55), 1) # 2.6
format(Decimal(2.55), '.1f') #'2.6'
ps, 这显然是round策略问题, 不要扯浮点数在机器中的存储方式, 且不说在python里float, int 都是同decimal.Decimal一样是对象, 就算是数字, 难道设计round的人就这么无知以至于能拿浮点数直接当整数一样比较?!
python 数字的四舍五入的问题相关推荐
- 使用python函数计算3.5四舍五入的结果_python 数字的四舍五入-Go语言中文社区
python 数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解决方案 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: 当一个值刚好在两个边界 ...
- Python Cookbook - 数字的四舍五入 (round(value, ndigits) 函数)
Python Cookbook - 数字的四舍五入 (round(value, ndigits) 函数) Python Cookbook 3rd Edition - Documentation htt ...
- 《Python Cookbook 3rd》笔记(3.1):数字的四舍五入
数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解法 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: >>> round(1 ...
- 儿童学文字编程python_手把手教你python数字知识
上篇文章讲述了python的数据类型. 我们先回顾一下:包括:数字,字符串,列表,元组,字典. 接下来我们详细的介绍这几种类型. 今天要说的是关于数字的教程. 说到数字,可能你的头脑里首先会反应出:1 ...
- Lesson 013 —— python 数字
Lesson 013 -- python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. Python 支持三种不同的 ...
- python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化
一.Python的数据类型 主要分为了数字型和非数字型两个大类,其中数字型又包含整形(int).浮点型(float).布尔型(bool),而非数字分为字符串(str).列表(list).元组(tupl ...
- python数字1 3怎么表示_Python3数据类型之数字
1. Python数字类型的作用 Python数字类型用来存储数值,它是不可变对象,一旦定义之后,其值不可以被修改.如果改变了数字类型的值,就要重新为其分配内存空间. 定义一个数字类型的变量:a = ...
- Python 数字day07
Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 var2 = 10 ...
- python数字计算公式_Python中数字以及算数运算符的相关使用
Python数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. 当你指定一个值时,Number对象就会被创建: var1 = 1 var2 = 1 ...
最新文章
- 等高线地图_地图欣赏:最美等高线
- centeros 7源码安装mysql_Linux下源码编译安装MySql,centeros7
- JS判断当前使用的是哪个浏览器及其版本
- 【Linux】Linux按tab键补全文件(名)或路径不区分大小写
- 干掉ubuntu中的overlay scrollbar
- 重磅解读:K8s Cluster Autoscaler模块及对应华为云插件Deep Dive
- linux python 操作mysql_python 简单操作MySQL
- Oracle和al,ORACLEAL TERTABLE
- 【Python】闭包Closure
- vagrant:修改Linux网络设置
- 脑电EEG代码开源分享 【5.特征选择】
- VS,VAX一些快捷键记录
- SIM800L透传模式配置
- [国家集训队] 矩阵乘法
- 山西台达plc可编程控制器_可编程控制器(PLC)故障的常见原因及处理方法
- 计算机应用技术需要学数学吗,学计算机应用技术能不学数学吗?
- 压缩包伪装-阿里网盘禁止分享解决方案\更新日志
- 台式计算机怎么查是32位还是64位,Win7系统怎么看电脑是32位还是64位?
- 基于模板匹配的知识图谱问答系统
- Linux 用户管理 文件目录指令 时间日期指令 搜索查找类 解压压缩类
热门文章
- 养老服务APP开发软件极大满足人们对于个性化养老服务的需求
- 计算机无法识别苹果6,苹果手机接入电脑itunes无法连接iPhone怎么办?
- 公务员备考(二) 行测 言语理解(40题35分钟,正确率80%)
- 【用pip命令安装python库到指定目录】
- 10 MySQL聚合函数数据分组
- oracle CTE 简介
- linux ssh欢迎信息,设置ssh登陆终端的欢迎信息
- k30pro杀进程严重怎么解决_英雄联盟手游iPhone12掉帧严重怎么办 lol手游苹果手机掉帧解决方法介绍...
- IndentationError: unindent does not match any outer indentation level 解决办法
- 供给与匹配错位,小红书社区建设任重道远