确定一个数字中的千分之一

时间:2017-05-25 19:07:33

标签: python rounding

如果飞机在美国飞行VFR,如果航向为东,则海拔高度必须为千零加500英尺(1500,3500,5500等)。如果向西飞行,海拔必须是一千甚至五千英尺(2500,4500,6500等)。如果我输入一个给定的高度,但是标题是错误的(奇数或偶数),我如何让Python在下一个更高的奇数或偶数千分之一(1500变为2500,6500变为7500等)时进行纠正?我们永远不会向下舍入高度。谢谢!

2 个答案:

答案 0 :(得分:0)

你可以将你的高度除以1000.0并转换成一个可以删除小数的int:

if int(altitude/1000.0) % 2 == 0

然后你可以用这些信息做任何你想做的事。

答案 1 :(得分:0)

您可以使用math.ceil执行此操作:

>>> import math
>>> def next_alt(alt):
...    return (math.ceil(alt/1000)+1)*1000+500
... 
>>> next_alt(2500)
3500.0
>>> next_alt(3500)
4500.0

然后可以通过这种方式在函数中使用:

def set_alt(heading, alt):
    if 0<=heading<=179:       # odd + 500
        return alt if alt / 1000 % 2 else (math.ceil(alt/1000)+1)*1000+500
    else:
        return alt if not alt / 1000 % 2 else (math.ceil(alt/1000)+1)*1000+500

(如果是Python 3,则需要//而不是/

>>> set_alt(290, 3500)
4500
>>> set_alt(90, 3500)
3500