Python 2.7: 将浮点数向上舍入到下一个偶数

15 投票
3 回答
21670 浏览
提问于 2025-04-18 17:39

我想把一个小数向上取整到下一个偶数。

步骤:

1) 检查一个数字是奇数还是偶数

2) 如果是奇数,就向上取整到下一个偶数

我已经完成了第一步,写了一个函数来检查给定的数字是否是偶数:

def is_even(num):
    if int(float(num) * 10) % 2 == 0:
        return "True"
    else:
        return "False"

但是我在第二步上遇到困难……

有什么建议吗?

注意:所有的小数都是正数。

3 个回答

-1
import math

def round_to_ceil_even(f):
  if (math.floor(f)%2 == 0): 
    return math.floor(f)
  else: 
    return math.floor(f)+1
def round_to_ceil_even(f):
  if (math.floor(f)%2 == 0): 
    return int(f)
  else: 
    return int(f+1)

这段内容包含了一张图片,图片的链接是 这里。你可以点击这个链接查看图片。

2
a = 3.5654
b = 2.568

a = int(a) if ((int(a) % 2) == 0) else int(a) + 1
b = int(b) if ((int(b) % 2) == 0) else int(b) + 1

print a
print b

执行后,a的值

a = 4

执行后,b的值

b = 2
45

第一步其实不需要。只要把这个数除以2,然后向上取整,最后再乘以2就可以了:

import math

def round_up_to_even(f):
    return math.ceil(f / 2.) * 2

示例:

>>> import math
>>> def round_up_to_even(f):
...     return math.ceil(f / 2.) * 2
... 
>>> round_up_to_even(1.25)
2
>>> round_up_to_even(3)
4
>>> round_up_to_even(2.25)
4

撰写回答