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需要设置floatdecimal.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 数字的四舍五入的问题相关推荐

  1. 使用python函数计算3.5四舍五入的结果_python 数字的四舍五入-Go语言中文社区

    python 数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解决方案 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: 当一个值刚好在两个边界 ...

  2. Python Cookbook - 数字的四舍五入 (round(value, ndigits) 函数)

    Python Cookbook - 数字的四舍五入 (round(value, ndigits) 函数) Python Cookbook 3rd Edition - Documentation htt ...

  3. 《Python Cookbook 3rd》笔记(3.1):数字的四舍五入

    数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解法 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: >>> round(1 ...

  4. 儿童学文字编程python_手把手教你python数字知识

    上篇文章讲述了python的数据类型. 我们先回顾一下:包括:数字,字符串,列表,元组,字典. 接下来我们详细的介绍这几种类型. 今天要说的是关于数字的教程. 说到数字,可能你的头脑里首先会反应出:1 ...

  5. Lesson 013 —— python 数字

    Lesson 013 -- python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. Python 支持三种不同的 ...

  6. python 数字运算及格式化_Python基础教程(3)Python数据类型、运算与格式化

    一.Python的数据类型 主要分为了数字型和非数字型两个大类,其中数字型又包含整形(int).浮点型(float).布尔型(bool),而非数字分为字符串(str).列表(list).元组(tupl ...

  7. python数字1 3怎么表示_Python3数据类型之数字

    1. Python数字类型的作用 Python数字类型用来存储数值,它是不可变对象,一旦定义之后,其值不可以被修改.如果改变了数字类型的值,就要重新为其分配内存空间. 定义一个数字类型的变量:a = ...

  8. Python 数字day07

    Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 var2 = 10 ...

  9. python数字计算公式_Python中数字以及算数运算符的相关使用

    Python数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. 当你指定一个值时,Number对象就会被创建: var1 = 1 var2 = 1 ...

最新文章

  1. 等高线地图_地图欣赏:最美等高线
  2. centeros 7源码安装mysql_Linux下源码编译安装MySql,centeros7
  3. JS判断当前使用的是哪个浏览器及其版本
  4. 【Linux】Linux按tab键补全文件(名)或路径不区分大小写
  5. 干掉ubuntu中的overlay scrollbar
  6. 重磅解读:K8s Cluster Autoscaler模块及对应华为云插件Deep Dive
  7. linux python 操作mysql_python 简单操作MySQL
  8. Oracle和al,ORACLEAL TERTABLE
  9. 【Python】闭包Closure
  10. vagrant:修改Linux网络设置
  11. 脑电EEG代码开源分享 【5.特征选择】
  12. VS,VAX一些快捷键记录
  13. SIM800L透传模式配置
  14. [国家集训队] 矩阵乘法
  15. 山西台达plc可编程控制器_可编程控制器(PLC)故障的常见原因及处理方法
  16. 计算机应用技术需要学数学吗,学计算机应用技术能不学数学吗?
  17. 压缩包伪装-阿里网盘禁止分享解决方案\更新日志
  18. 台式计算机怎么查是32位还是64位,Win7系统怎么看电脑是32位还是64位?
  19. 基于模板匹配的知识图谱问答系统
  20. Linux 用户管理 文件目录指令 时间日期指令 搜索查找类 解压压缩类

热门文章

  1. 养老服务APP开发软件极大满足人们对于个性化养老服务的需求
  2. 计算机无法识别苹果6,苹果手机接入电脑itunes无法连接iPhone怎么办?
  3. 公务员备考(二) 行测 言语理解(40题35分钟,正确率80%)
  4. 【用pip命令安装python库到指定目录】
  5. 10 MySQL聚合函数数据分组
  6. oracle CTE 简介
  7. linux ssh欢迎信息,设置ssh登陆终端的欢迎信息
  8. k30pro杀进程严重怎么解决_英雄联盟手游iPhone12掉帧严重怎么办 lol手游苹果手机掉帧解决方法介绍...
  9. IndentationError: unindent does not match any outer indentation level 解决办法
  10. 供给与匹配错位,小红书社区建设任重道远