Python浮点转换

Python浮点转换,python,Python,我的教授在演示过程中编写了第二个代码片段。他们的产出是浮动的。对我来说,只有第一个代码片段是浮点。知道为什么会有不同吗?第二个代码段似乎有整数除以整数,然后加上整数,所以我不知道为什么它会被转换成浮点 n = 4 total = 0 for i in range(n+1): total = total + 1 / float(2**i) return total 在Python2中,两个int的除法产生一个int。 在Python3中,它生成一个浮点。 我认为您使用的是python 2,您

我的教授在演示过程中编写了第二个代码片段。他们的产出是浮动的。对我来说,只有第一个代码片段是浮点。知道为什么会有不同吗?第二个代码段似乎有整数除以整数,然后加上整数,所以我不知道为什么它会被转换成浮点

n = 4
total = 0
for i in range(n+1):
  total = total + 1 / float(2**i)
return total

在Python2中,两个int的除法产生一个int。 在Python3中,它生成一个浮点。
我认为您使用的是python 2,您是python 3教授。

正如khelwood所提到的,在python 2中,当您将一个整数除以一个整数时,结果也是一个整数,但在python 3中,结果变成了一个浮点。 让我示范一下

Python 2 10/6 == 1 10/3 == 3 很像C++的除法运算符,它删除任何小数并返回一个整数。 然而,对于Python3来说,这是一个变化

Python 3 10/6 == 1.6666666666666667 10/3 == 3.3333333333333335 在Python3中,除法操作符将返回floatdivising int/int

如果希望在Python 2中使用浮点除法,则需要 来自像Jan提到的未来进口部门


这将允许您进行除法以获得浮点值

显然,浮点是不同的:-您使用的是什么python版本?在python 2中,int/int=int。在python 3中,int/int=float。但是在python 2中,请注意从uu future\uu导入除法:-很抱歉造成混淆,我的意思是,第二个代码片段为我产生的结果与演示期间不同。这两段代码之间没有什么区别。从这些答案中,我认为区别可能在于我使用的是Python2,老师没有,整数除法在这两者中都是//的,所以3//2在Python3中是1 int,但在2中也是显式整数除法。floatdiv的旧方法是3/2.0,当然在python2中也是1.5。但是未来的导入对于3的兼容性很好。@antont我在回答中遗漏了什么吗?如果是这样的话,您可以编辑它来添加缺少的点,实际上什么都没有缺少,但是它可能是有用的补充信息,可以告诉您关于整数除法运算符的信息。因为浮点与整数分割的话题已经开始了。但这与教授获得浮动div的实际问题并不相关,而这正是人们通常想要的
n = 4
total = 0
for i in range(n+1):
  total = total + 1 / 2**i
return total