Python:1和1之间的区别

时间:2018-04-15 07:54:10

标签: python python-3.x

我遇到了一些代码:

dz3 = 1./m * (a3 - Y)

为什么1.在这里使用而不仅仅是1

两者似乎都相同:

>>> 1 / 4
0.25
>>> 1. / 4
0.25

是否有任何不相同的情况?

3 个答案:

答案 0 :(得分:6)

这种事情将用于Python 2兼容性,其中默认情况下,具有两个int操作数的除法是整数除法。 1.float而不是int,因此无论Python版本是否为m都是int,都会导致浮点除法。

答案 1 :(得分:2)

在Python2中

>>> 3/2 # returns 1

而在Python3中

>>> 3/2 # returns 1.5

正如你所看到的那样,一个是整数除法,另一个是浮点除法。

如果我要写

>>> 3./2 # returns 1.5

无论我选择的Python版本如何,它都执行浮点除法。因为float / integer只能导致float。

另外,要在Python 3中进行整数除法,只需编写

即可
>>> 3//2

See for further info

答案 2 :(得分:1)

好的以前的答案并不完全。 1和1之间的主要区别在于它们的类型和类型,在python中包含float数的任何等式的结果都将是float。

包括加法减法乘法指数,甚至整数除法,就像一个操作数是浮点数一样,将是float类型。

另外正如其他人提到的那样主要是为了与python2的兼容性,但要注意在那个表达式中,如果一个num是float,那么result将永远是float。

..# 1. / 4
   0.25
..# 1 / 4
   0.25
..# type(1.)
   <class 'float'>
..# type(1)
   <class 'int'>
..# 1 // 4
   0
..# 1. // 4
   0.0
..# type(1. // 4)
   <class 'float'>
..# type(1 // 4)
   <class 'int'>

我将解释器>>>更改为..#,因为堆栈编辑器在多行中显示为报价级别。

所以基本上如果你想确保那个代码片段总是有一个浮动值,你就可以使其中一个数字浮动。