我有以下代码:
x=4200/820
它应该返回x=5.12
但它会x=5
。我怎么能改变这个。感谢
编辑: 如果我有这个代码:
x=(z-min(z_levels))/(max(z_levels)-min(z_levels))
其中z, min(z_levels) and max(z_levels)
是从列表中取得的for循环中更改的值。
如何让x
浮动?我需要更改这样的代码:?
x=float(z-min(z_levels))/float(max(z_levels)-min(z_levels))
答案 0 :(得分:4)
使用小数来使python使用浮点数
>>> x=4200/820.
>>> x
5.121951219512195
如果您想将x舍入为5.12,则可以使用round
函数:
>>> round(x, 2)
5.12
答案 1 :(得分:2)
你应该至少将一个变量/值转换为float,即。
x=float(4200)/float(820)
或使用小数点表示该值是浮点数(x=4200/820.
)
或者您可以使用from __future__ import division
,然后常规的int division将返回浮点数。
In [1]: from __future__ import division
In [2]: 4200/820
Out[2]: 5.121951219512195
要在导入后实现python 2x样式整数除法(其中result是舍入整数),您应该使用//
运算符:
In [22]: 4200//820
Out[22]: 5
答案 2 :(得分:2)
在python2.x中integer division
总是会导致截断输出,但如果其中一个操作数更改为float
,那么输出也是float
。
In [40]: 4200/820
Out[40]: 5
In [41]: 4200/820.0
Out[41]: 5.121951219512195
In [42]: 4200/float(820)
Out[42]: 5.121951219512195
这是changed in python 3.x,在py3x中/
导致真正的除法(非截断),而//
用于截断输出。
In [43]: from __future__ import division #import py3x's division in py2x
In [44]: 4200/820
Out[44]: 5.121951219512195
答案 3 :(得分:1)
其中一个应该是浮动的:
In [152]: 4200/820.
Out[152]: 5.121951219512195