Python取整——向上取整、向下取整、四舍五入取整、向0取整(腦子記不住就用筆記記/o(╥﹏╥)o)


轉至:https://blog.csdn.net/weixin_41712499/article/details/85208928

廢話少敘,直接上code:

首先,不得不提醒大家一個容易被忽視或者搞混的問題——一般的,0.5這種末尾是5的小數,四舍五入取整應進位。這個進位的意思是:-0.5 → -1;0.5 → 1.即正負情況不同,都向着遠離0,使得絕對值更大的方向進位

  • 向上取整:math.ceil()
    1.  
      import math
    2.  
       
    3.  
      math.ceil( -0.5)
    4.  
      >>> 0
    5.  
       
    6.  
      math.ceil( -0.9)
    7.  
      >>> 0
    8.  
       
    9.  
      math.ceil( 0.3)
    10.  
      >>> 1

    如code所見,math.ceil()嚴格遵循向上取整,所有小數都是向着數值更大的方向取整,不論正負數都如此

  • 四舍五入:round()

    1.  
      round( -2.5)
    2.  
      >>> -2
    3.  
       
    4.  
      round( -1.5)
    5.  
      >>> -2
    6.  
       
    7.  
      round( -0.5)
    8.  
      >>> 0
    9.  
       
    10.  
      round( 0.5)
    11.  
      >>> 0
    12.  
       
    13.  
      round( 1.5)
    14.  
      >>> 2
    15.  
       
    16.  
      round( 2.5)
    17.  
      >>> 2

     如code所示,round()當不傳入第二個參數時默認取整,具體就是按照四舍五入來。但值得一提的是這里對小數末尾為5的處理方法:當末尾的5的前一位為奇數:向絕對值更大的方向取整(比如-1.5、1.5處理結果);當末尾的5的前一位為偶數:去尾取整(比如-2.5,-0.5,0.5和2.5的處理結果)。

  • 向下取整:math.floor()

    1.  
      math.floor( -0.3)
    2.  
      >>> -1
    3.  
       
    4.  
      math.floor( 0.9)
    5.  
      >>> 0

    簡單且忠實地向下取整,不再討論

  • 兩個有趣且特殊的Python取整:int()、整除"//"

    • int()

      1.  
        int( -0.5)
      2.  
        >>> 0
      3.  
         
      4.  
        int( -0.9)
      5.  
        >>> 0
      6.  
         
      7.  
        int( 0.5)
      8.  
        >>> 0
      9.  
         
      10.  
        int( 0.9)
      11.  
        >>> 0

      一句話總結:int()函數是“向0取整”,取整方向總是讓結果比小數的絕對值更小

    • "//"

      1.  
        ( -1) // 2 # -0.5
      2.  
        >>> -1
      3.  
         
      4.  
        ( -3) // 2 # -1.5
      5.  
        >>> -2
      6.  
         
      7.  
        1 // 2 # 0.5
      8.  
        >>> 0
      9.  
         
      10.  
        3 // 2 # 1.5
      11.  
        >>> 1

      一句話總結:“整除”符號運算將結果忠實地向下取整,與math.floor()處理結果一樣

 

總結一下:

  1. 向上取整:math.ceil()
  2. 向下取整:math.floor()、整除"//"
  3. 四舍五入:round()——奇數向遠離0取整,偶數去尾取整;或言之:奇數進位,偶數去尾
  4. 向0取整:int()

由於最近在做算法題,許多算法題都要涉及(0-1)/2這類的邊界計算,這時候我們想讓這個-0.5取整至0,而且想讓(4-1)/2的結果1.5取整至1,即正數時向下取整,負數時向上取整,總而言之就是向0取整,這時候我們可以用int()


免責聲明!

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



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