如何在Python中将整数转换为浮点数?

37
有人知道如何将int转换为float吗?
出于某种原因,它一直打印0。我希望它打印一个特定的小数。
sum = 144
women_onboard = 314
proportion_womenclass3_survived = sum / np.size(women_onboard)
print 'Proportion of women in class3 who survived is %s' % proportion_womenclass3_survived

参见:如何强制除法为浮点数?除法一直向下舍入为0?以了解底层问题。进行转换是避免此问题的自然方法,但也有其他原因可能需要进行此类转换。

sum = sum + 0.0 或者简单地写成 sum += 0.0 就足以将一个整数变为浮点数。我正在学习Python,但它似乎很简单(https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex说:“Python完全支持混合算术:当二元算术运算符具有不同数字类型的操作数时,较“窄”的类型的操作数会扩展到另一个操作数的类型,其中整数比浮点数更窄,而浮点数比复数更窄。对于不同类型的数字之间的比较,行为就像这些数字的确切值一样...”) - Jonadabe
6个回答

52

要将一个整数转换为Python中的浮点数,可以使用以下代码:

float_version = float(int_version)
你得到的 0 是因为在 Python 2 中,如果数学运算(例如除法)是在两个整数之间进行的,则会返回整数。因此,虽然 144 除以 314 的结果是 0.45~~~,Python 将其转换为整数,并通过消除小数点后的所有数字仅返回 0
另一种方法是将任何操作中的一个数字转换为浮点数,因为浮点数和整数之间的操作将返回浮点数。在你的情况下,你可以写成 float(144)/314144/float(314)。另一个不太通用的代码是 144.0/314。这里的 144.0 是一个浮点数,所以结果相同。

17

除了约翰的答案之外,您还可以将其中一个变量设置为浮点数,结果也将得到浮点数。

>>> 144 / 314.0
0.4585987261146497

3
我不愿意这样做只是因为它会让你改变可能来自数据库或其他地方的输入(通过在数字后面添加“.0”)。这就是为什么我喜欢使默认行为符合我的要求 :) 但无论如何,我们都在这里争取声望,所以我给你点赞:) - John Ruddell

6
在Python 3中,这是默认行为,但如果您没有使用它,可以像这样导入division:
>>> from __future__ import division
>>> 144/314
0.4585987261146497

或者,在进行除法运算时,您可以将其中一个变量转换为浮点数,这样也会产生相同的效果。

sum = 144
women_onboard = 314
proportion_womenclass3_survived = sum / float(np.size(women_onboard))

4
您可以直接将1.0乘以。
>>> 1.0*144/314
0.4585987261146497

4

您可以使用以下方式将其转换为浮点数:


float_value = float(integer_value)


同样地,您可以使用以下代码将整数转换回浮点数类型:

integer_value = int(float_value)

希望对您有所帮助。我建议您阅读此链接中的“Python内置函数”: https://docs.python.org/2/library/functions.html


0

以上提供的答案完全正确且值得一读,但我只想直接回答这个问题。

所问的问题仅是类型转换问题,需要将数据类型从 int 转换为 float,你可以使用以下函数:

float()

如需更多细节,请访问 this 页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接