将int转换为double Python

The*_*man 13 python

我似乎无法在这个网站上找到答案,尽管看起来它很常见.我试图输出一个双倍的两个文件中的行数比.

#Number of lines in each file
inputLines = sum(1 for line in open(current_file))
outputLines = sum(1 for line in open(output_file))
Run Code Online (Sandbox Code Playgroud)

然后得到比例:

ratio = inputLines/outputLines
Run Code Online (Sandbox Code Playgroud)

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

ratio = 1.0
Run Code Online (Sandbox Code Playgroud)

谢谢.

gon*_*opp 26

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

ratio = float(inputLines)/outputLines

小心不要这样做ratio = float(inputLines/outputLines):虽然这会导致浮动,但它是在进行整数除法获得的,因此结果将是"错误的"(如"不是你所期望的")

在python 3中,整数除法行为被改变,并且两个整数的除法导致浮点数.您也可以在python 2.7中使用此功能,方法是from __future__ import division输入文件.


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

a= 1.0 # "a" is a float
a= 1   # "a" is now a integer
Run Code Online (Sandbox Code Playgroud)