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要更精確

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM