舍入变量

时间:2013-04-28 21:48:27

标签: python rounding

我有以下代码:

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 个答案:

答案 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