python 四舍五入

python 四舍五入

  • i = 1.35   float类型 主要属于不精确数    原因:float是二进制存储    实际存储:1.350000000000000088817841970012523233890533447265625
  • i = 1        int类型 属于精确数
  • i = decimal.Decimal('1.23')  decimal 专用10进制精确数
  • i = 1.5  一位小数,且小数为5 是float,但是精确数,二进制能够精确表示  1.5
  • int 和 decimal 可以运算  float 和 decimal 不能
  • 四舍五入,整体上会导致数据偏高
  • 舍(1,2,3,4)  入(5,6,7,8,9)  不变(0),从概率来讲入的多一些
  • 舍(1,2,3,4)  入(6,7,8,9)  不变(0)  平均(5) 为了更公平,5采取平均的方式  “奇取偶舍” 需要舍位的前一位,就是5的前一位,如果是奇数就入,偶数则舍
  • 尾数刚好是5才会这样选择,如果要舍弃的是两位,比如2.51,2.51明显离2近一点,就选择入
  • round(1.5)  2   round(2.5) 2
  • round(decimal('1.35')) 1.4   奇数就入,偶数则舍
  • 上面的数字是精确数,而不精确数由于本身转为10进制数时就多了或少了  (四舍五入对应的是10进制数)
  • 比如1.35        1.350000000000000088817841970012523233890533447265625   明显大于5,要入
  • 不精确类型的四舍五入
  • round(1.35, 1)    1.4

总结:

  • 四舍五入 是对十进制数来说,所以float要转成10进制数才有意义
  • 四舍五入 是看数字距离哪个更近,与我们平时只看舍弃的最近一位不同   ROUND_HALF_EVEN策略
  • 1.51   平时只关心十分位,而python要更精确
原文地址:https://www.cnblogs.com/wayland3/p/10949663.html