美文网首页
Python2.7 的除法

Python2.7 的除法

作者: yybur | 来源:发表于2017-12-17 22:35 被阅读0次

    做 udacity 项目的时候发现 python 的除法好像比其他数学运算复杂一点。整理了下几种可能的情况。

    1. 如果除数和被除数都是整数,无论数学结果如何,得到的就是整数

    >>> x = 15/30   #math: 0.5
    >>> print x
    0
    >>> x = 3/5  # math 0.6
    >>> print x
    0
    

    数学上答案明明应该是是0.5,出来的结果却是0。试了几次发现,python 2.7 里,如果分母和分子都是整数,得到的结果就是整数; 而且得到的整数不是四舍五入后的结果,而是无论小数点后的数值如何,直接抹去。(强调python 2.7是因为python3 这部分有所不同,下面会提到。)

    2. 只要除数和被除数中有一个是浮点数,无论数学结果如何,得到的就是浮点数

    >>> x = 15./30
    >>> print x
    0.5
    
    >>> y = 30./30
    >>> print y
    1.0
    

    3. from __future__ import division, 区分 "/" 和"//"

    / : 不管除数和被除数种是否有浮点数,得到的结果都是浮点数;
    //: 不管除数和被除数种是否有浮点数,得到的结果都是整数(小数点之后的位数直接抹去);

    from __future__ import division
    x = ((x-min(arr))/ (max(arr)- min(arr)))
    print x
    # 不管 min(arr) 是整数还是浮点数,得到的结果都是浮点数
    x = ((x-min(arr))// (max(arr)- min(arr)))
    print x
    # 不管 min(arr) 是整数还是浮点数,得到的结果都是整数(如果有小数点的话小数点之后的
    

    还需要注意的是,在pyhton3中,"/"表示的就是float除,不需要再引入模块,就算分子分母都是int,返回的也将是浮点数 ---python中的float除法和整除法

    4. 对得到的浮点数四舍五入: round()

    虽然得到的结果可能是浮点数,但如果位数太多也会造成麻烦,这个时候就需要祭出 round() 四舍五入了。

    round( x [, n] )
    x 是输入值,n 是返回的小数点位数。

    round(80.23456, 2) :  80.23
    round(100.000056, 3) :  100.0
    round(-100.000056, 3) :  -100.0
    

    参考:

    python中的float除法和整除法
    跟老齐学Python之啰嗦的除法
    Python round() 函数

    相关文章

      网友评论

          本文标题:Python2.7 的除法

          本文链接:https://www.haomeiwen.com/subject/ghwuwxtx.html