在Python中使用整数除法

发布于 2021-01-29 15:02:26

您能帮我弄清楚这个Python部门吗

基数= 12.0

高度= 16

面积= 1/2 基础高度

解决方案对此表示

面积=(基数*高度)/ 2;

让我感到困惑的是1/2将是浮点数,而Python仅显示0而不是0.5,为什么在这种情况下解决方案显示/ 2 …

关注者
0
被浏览
76
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Python2.7自动使用/运算符作为整数(整数)除法,该运算符将始终产生整数。

    例如:

    1/2 = 0

    3/4 = 0

    100/30 = 3

    要进行浮点除法,必须将一个或两个值都作为浮点类型。

    像这样:

    Area = 1.0/2 * Base * Height # 1.0 is a float type, 1 is an integer type
    

    结果不是您所期望的,因为Python使用整数除法和运算顺序来评估表达式。

    如果您16 * 12 / 2使用Python进行评估,Python会将其解释为(16 * 12) / 2192 / 2 = 96

    如果进行评估1/2 * 16 * 12,Python会将其解释为(((1/2) * 16) * 12)=(0 * 16) * 12

    进一步的例子:

    Area = Base * Height * (1.0/2.0)
    

    蟒求值(1.0 / 2.0) 第一
    此时,由于操作使然为了使括号首先评估。由于1.0和2.0是浮点数而不是整数,因此Python可以执行浮点除法。你得到这个:

    Base * Height * (0.5)
    = 192 * 0.5
    = 96
    

    ,它给您您所期望的。

    相反:

    Base * Height * (1/2)
    = Base * Height * (0) # since 1/2 rounds down to 0 in integer division
    = 192 * 0
    = 0
    

    Carpetsmoker的替代解决方案:

    from __future__ import division
    

    该行将为您提供Python2.x程序中的Python3.x行为/,即使两个值都是整数类型,Python3.x也将运算符接受为浮点除法。这样,在您导入后,/就成为浮点除法运算符。

    >>> from __future__ import division
    >>> 1/2
    0.5
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看