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. cbow word2vec 损失_Skip-gram和CBOW知识点
  2. error40无法打开到sql_SQL-mysql游标与触发器
  3. NSURLSession学习笔记(二)Session Task
  4. 考研复习(8)-图的基本操作
  5. Linux负载均衡--LVS
  6. 重写( override)and 重载(overload)
  7. windows本地script脚本恶意代码分析(带注释)
  8. 市民卡怎么登录显示服务器繁忙,2分钟办理一笔业务 杭州网记者体验最具人气的“市民卡”窗口服务...
  9. 抢购软件使用方法(如何开发抢购软件)
  10. 临别给《生活大爆炸》做个台词数据分析,你猜谢耳朵最爱说什么?
  11. 一个简单的Appium测试(Python语言)
  12. 英语写作翻译-形容词(一)
  13. 目前梦幻山东区人最多的服务器,梦幻西游十大火区盘点:有好朋友的区就是最火的区...
  14. android -- 蓝牙 bluetooth (一) 入门
  15. php yield 携程,爬取携程国内地区攻略评论
  16. 【论文解读 ICEIT2022】Heterogeneous Graph Based Knowledge Tracing基于异构图的知识追踪
  17. android 模拟器截屏 保存到模拟器,天天模拟器屏幕截图保存在哪里?天天模拟器图库位置介绍...
  18. 关于asc、txt格式到pcd、ply格式数据转换
  19. Systemverilog中static、automatic区别
  20. 儿童周成就任务全攻略

热门文章

  1. Linux——让程序在后台运行(四种方法+使用推荐)
  2. while在Java用法_Java While循环 do-while循环用法
  3. layui分页数据表格渲染
  4. layui的分页功能
  5. SMC++进行有效种群分析
  6. table表格单元格padding_table的使用以及其内padding、margin的实现
  7. Flutter数据持久化
  8. MyBatis Generate的使用
  9. 客户端返回400错误
  10. @NotEmpty、@NotBlank、@NotNull 区别和使用