Python分部

发布于 2021-02-02 23:23:48

我试图将一组从-100到0的数字归一化到10-100的范围,并且遇到了问题,只是注意到即使根本没有任何变量,这也无法评估我期望的方式:

>>> (20-10) / (100-10)
0

浮动划分也不起作用:

>>> float((20-10) / (100-10))
0.0

如果除法的任一侧都转换为浮点数,它将起作用:

>>> (20-10) / float((100-10))
0.1111111111111111

第一个示例中的每一边都被评估为一个int,这意味着最终答案将被转换为一个int。由于0.111小于.5,因此将其舍入为0。在我看来,这不是透明的,但我想是这样的。

有什么解释?

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

    你使用的是Python 2.x,其中整数除法将被截断而不是变成浮点数。

    >>> 1 / 2
    0
    

    你应该将其中一个设为float:

    >>> float(10 - 20) / (100 - 10)
    -0.1111111111111111
    

    from __future__ import division,强制/采用总是返回float的Python 3.x行为。

    >>> from __future__ import division
    >>> (10 - 20) / (100 - 10)
    -0.1111111111111111
    


知识点
面圈网VIP题库

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

去下载看看