Pythonic to to#34; round()"喜欢Javascript" Math.round()"?

时间:2016-01-19 12:15:46

标签: javascript python python-3.x math

我想要最像Pythonic的方式来舍入数字,就像Javascript一样(通过Math.round())。它们实际上略有不同,但这种差异会对我的应用产生巨大影响。

使用Python 3中的round()方法:

// Returns the value 20
x = round(20.49)

// Returns the value 20
x = round(20.5)

// Returns the value -20
x = round(-20.5)

// Returns the value -21
x = round(-20.51)

使用Javascript *中的Math.round()方法:

// Returns the value 20
x = Math.round(20.49);

// Returns the value 21
x = Math.round(20.5);

// Returns the value -20
x = Math.round(-20.5);

// Returns the value -21
x = Math.round(-20.51);

谢谢!

参考文献:

3 个答案:

答案 0 :(得分:10)

import math
def roundthemnumbers(value):
    x = math.floor(value)
    if (value - x) < .50:
        return x
    else:
        return math.ceil(value)

还没有喝咖啡,但这个功能应该做你需要的。也许还有一些小修改。

答案 1 :(得分:7)

Python的round函数的行为在Python 2和Python 3之间发生了变化。但看起来您需要以下版本,这两个版本都适用:

math.floor(x + 0.5)

这应该产生你想要的行为。

答案 2 :(得分:1)

不是在python中使用round()函数,你可以在python中使用floor函数和ceil函数来完成你的任务。

地板(X + 0.5)

小区(X-0.5)