Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说python支持double_将int转换为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))
然后得到比率:
1ratio = inputLines/outputLines
但这个比率似乎总是一个整数和整数,即使我像这样初始化它:
1ratio = 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
2a= 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通过将其放在文件的顶部:
1from __future__ import division
或者更好的是,停止使用python 2:)
您需要将其中一个术语强制转换为浮点值。使用float(即ratio = float(a)/b)或ratio=a/float(b))或隐式添加0.0:ratio = (a+0.0)/b。
如果使用python 2,可以使用from __future__ import division使除法不是整数除法,而是浮点除法。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。