Python數據處理(四舍五入、除法部分)


    最近在改造之前的代碼的過程中發現一直使用的除法都是“傳統除法”,即對整數進行操作,結果的精度不准,正巧在看python核心編程,碰到這塊,整理下。

關於除法

  • 傳統除法

        對兩個整數進行除的運算,同時結果會舍去小數部分,返回一個整數。但如果操作數之一是浮點型,則執行真正的除法。

  • 真正的除法

         返回真實的商,不管操作數的類似是整數還是浮點數

         需要執行如下指令將傳統除法轉換為真正的除法

from __future__  import division
  • 地板除

         不管操作數為何種數值類型,總是舍去小數部分,返回數字序列中比真正的商小的最接近的數字,操作符“//”

 舉例:

>>> print "5/3傳統除法:",5/3
5/3傳統除法: 1
>>> from __future__  import division
>>> print "5/3真正的除法:",5/3
5/3真正的除法: 1.66666666667
>>> print "5/3地板除:",5.0//3
5/3地板除: 1.0

  

關於取整

      常用的直接就是int(),但會發現是直接把小數部分去掉了的整數,有的時候不是我們要的,學習了下int,floor,round的區別

  • int() 直接截去小數部分(返回值為整型)
  • floor()得到的是最接近原數但小於原數的整型(返回值為浮點型)  
  • round()得到最接近原數的整型(返回值為浮點型)

舉例:

    

>>> import math
>>> int(3.67)
3
>>> math.floor(3.67)
3.0
>>> round(3.67)
4.0

  

如上只是針對python2.X版本的情況,python3.X版本已經有了變化。

如下為python3.3版本的對應變化

關於除法

  •  傳統除法

          python3.3版本中的傳統除法就是真正的除法,不管除數和被除數是否為整數,結果都是真實的商。

  •   地板除

          python3.3版本中保留了地板除。

舉例:

>>> print ("傳統除法:",1/2)
傳統除法: 0.5
>>> print ("地板除:",1//2)
地板除: 0

 關於取整

python3.3中的int()和floor()、round()的運算方式沒變動,只是最終的返回結果都是整型

舉例:

>>> int(1.9)
1
>>> import math
>>> math.floor(1.2)
1
>>> type(math.floor(1.2))
<class 'int'>
>>> round(1.6)
2
>>> type(round(1.6))
<class 'int'>

  


免責聲明!

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



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