• 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()

  • 相关阅读:
    求最长不降子序列

    普通背包问题
    求最大子序列
    最大人品
    C# 显示webBrowser页面加载进度
    Provider 错误 '80004005' 未指定的错误 的最终解决方法
    C# 截取webBrowser网页存为图片
    浅谈Python小数据池
    js文件编译成动态链接库(dll)文件
  • 原文地址:https://www.cnblogs.com/meina/p/14441304.html
Copyright © 2020-2023  润新知