写一个舍入函数而不是使用math.floor

时间:2019-06-06 20:30:07

标签: python

不是使用math.floor,而是为我编写一个舍入函数。我的想法是: 测试是否为数字→数字是否为正→小数部分> = 0.5→是,打印[round(number)-1],否则打印[round(number)]

我基本上有两个问题。 首先是如何测试输入是正还是负? 第二个是如何使用if / elif / else编写多个语句。因为我有两层条件,所以我不知道该用什么。

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

#2 is input positive? 

#3 s > 0+ decimal >= 0.5;
if s > 0:
    if s - round(s) < 0:
    print (round(s) - 1)
    else: 
    print(round(s)) #decimal < 0.5

else: # s < 0 + decimal >= 0.5
    if s - round (s) > 0: 
    print (round(s) + 1)
    else: # decimal < 0.5
    print (round(s))

我希望四舍五入。

1 个答案:

答案 0 :(得分:1)

int函数会截断一个十进制数字,使您可以舍入到下一个整数。

def round_down(x):
    return int(x)-1 if x < 0 else int(x)

round_down(3.5)   # 3
round_down(-4.6)  # -5