我遇到了一些代码:
dz3 = 1./m * (a3 - Y)
为什么1.
在这里使用而不仅仅是1
?
两者似乎都相同:
>>> 1 / 4
0.25
>>> 1. / 4
0.25
是否有任何不相同的情况?
答案 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
答案 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'>
我将解释器>>>
更改为..#,因为堆栈编辑器在多行中显示为报价级别。
所以基本上如果你想确保那个代码片段总是有一个浮动值,你就可以使其中一个数字浮动。