代码之家  ›  专栏  ›  技术社区  ›  RafaelJan

python-为什么a=1/3是int,a=0.3是float[重复]

  •  1
  • RafaelJan  · 技术社区  · 6 年前

    这个问题已经有了答案:

    因为python决定a=1/3是int,所以a的值为0,这是非常不期望的。 我相信阅读完整的文档可以解释这一点,但谷歌的很多搜索并没有找到这个问题的简单答案。

    4 回复  |  直到 6 年前
        1
  •  1
  •   Mehrdad Pedramfar    6 年前

    在python2二区 int 将是一个 int . 但在python3中,它是固定的。

    >>type(1/3)
    <type 'int'>
    

    如果你想让他们漂浮在蟒蛇2中:

    >>from __future__ import division
    >>type(1/3)
    <type 'float'>
    

    或者,您可以通过将其中一个变量强制为float来获得float结果:

    >>type(1/float(3))
    <type 'float'>
    

    在Python 3中 / 结果将是 float // 结果将为int。

    In [1]: type(1/3)
    Out[1]: float
    
    In [2]: type(1//3)
    Out[2]: int
    
        2
  •  1
  •   Orit    6 年前
    a=1/3
    

    是一个表达式,其计算结果为int/int,生成int结果。

    a=0.3
    

    是未计算的值,并且是浮点。

        3
  •  0
  •   U13-Forward    6 年前

    @ulricheckhardt是正确的,在python 3中,这就是您得到的:

    >>> a=1/3
    >>> a
    0.3333333333333333
    >>> type(a)
    <class 'float'>
    >>> 
    

    但在python 2中,至少有一个值应该是float:

    >>> a=1.0/3
    >>> a
    0.3333333333333333
    >>> type(a)
    <class 'float'>
    >>> 
    

    或:

    >>> a=1/3.0
    >>> a
    0.3333333333333333
    >>> type(a)
    <class 'float'>
    >>> 
    
        4
  •  0
  •   duong_dajgja    6 年前

    python2和python3之间存在差异:

    用Python 2:

    $python
    Python 2.7.6 (default, Nov 13 2018, 12:45:42)
    
    >>> type(1/3)
    <type 'int'>
    >>> type(0.3)
    <type 'float'>
    

    用Python 3:

    $python3
    Python 3.6.1 (default, Dec 19 2018, 09:17:24)
    
    >>> type(1/3)
    <class 'float'>
    >>> type(0.3)
    <class 'float'>
    

    短期内:

    • 在Python 2: / 当与整数一起使用时,表示整数除法,然后 1/3 简单= 0 整数。
    • 在Python 3中: / 即使与整数一起使用也意味着实数除法,然后 1/3 = 0.33333... 浮子。