0

我有以下代码:

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))
4

4 回答 4

4

使用小数使 python 使用浮点数

>>> x=4200/820.
>>> x
5.121951219512195

如果您想将 x 舍入到 5.12,您可以使用以下round函数:

>>> round(x, 2)
5.12
于 2013-04-28T21:50:36.350 回答
2

您应该将至少一个变量/值转换为浮点数,即。 x=float(4200)/float(820)或使用小数点表示该值为浮点数 ( x=4200/820.)

或者您可以使用from __future__ import division, 然后常规 int 除法将返回浮点数。

In [1]: from __future__ import division

In [2]: 4200/820
Out[2]: 5.121951219512195

要在此导入后实现 python 2x 样式整数除法(其中结果是舍入整数),您应该使用//运算符:

In [22]: 4200//820
Out[22]: 5
于 2013-04-28T21:50:37.047 回答
2

在 python2.xinteger 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

这已在 python 3.x 中进行了更改,在 py3x 中/导致 True 除法(非截断)而//用于截断输出。

In [43]: from __future__ import division #import py3x's division in py2x

In [44]: 4200/820
Out[44]: 5.121951219512195
于 2013-04-28T21:50:54.677 回答
1

其中之一应该是浮动的:

In [152]: 4200/820.
Out[152]: 5.121951219512195
于 2013-04-28T21:51:09.093 回答