将int转换为double Python

Convert int to double Python

本问题已经有最佳答案,请猛点这里访问。

我似乎在这个网站上找不到答案,尽管这似乎足够普遍。我试图输出两个文件中行数之比的双精度值。

1
2
3
#Number of lines in each file
inputLines = sum(1 for line in open(current_file))
outputLines = sum(1 for line in open(output_file))

然后得到比率:

1
ratio = inputLines/outputLines

但这个比率似乎总是一个整数和整数,即使我像这样初始化它:

1
ratio = 1.0

谢谢。


在python 2中,两个整数的除法的结果总是一个整数。要强制执行浮点除法,需要在除法中至少使用一个浮点:

ratio = float(inputLines)/outputLines

注意不要执行ratio = float(inputLines/outputLines):虽然这会导致一个浮点,但它是在执行整数除法之后获得的,因此结果将是"错误的"(如"不是您所期望的")。

在python 3中,整数除法的行为发生了变化,两个整数的除法产生了一个浮点。您也可以在python 2.7中使用此功能,方法是将from __future__ import division放在乞讨文件中。

ratio = 1.0不起作用的原因是类型(在python中)是值的属性,而不是变量——换句话说,变量没有类型。

1
2
a= 1.0 #"a" is a float
a= 1   #"a" is now a integer


您使用的是python 2.x吗?

试用使用

1
2
3
>>> from __future__ import division
>>> ratio = 2/5
0.4

从一个部门得到一个float

使用ratio = 1.0初始化不起作用,因为使用ratio = inputLines/outputLines时,无论以前是什么,都会将变量赋给int。


实际上,当您分割一个整数时,python 2返回一个整数。您可以像在Python3中那样重写此行为,其中int / int = float通过将其放在文件的顶部:

1
from __future__ import division

或者更好的是,停止使用python 2:)


您需要将其中一个术语强制转换为浮点值。使用float(即ratio = float(a)/b)或ratio=a/float(b))或隐式添加0.0ratio = (a+0.0)/b

如果使用python 2,可以使用from __future__ import division使除法不是整数除法,而是浮点除法。