You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用def函数及循环编写求给定数最接近整百值的程序

最近整百值查找实现方案

实现核心逻辑很明确:先定位离输入值最近的两个整百边界(一个比输入值小、一个比输入值大),分别计算输入值和两个边界的差值,返回差值更小的边界即可;如果两边差值恰好相等(比如150离100、200的差都是50),按通用规则取数值更大的上界即可。两种基于循环的自定义函数实现如下:

while循环版本

通过while循环逐次递减找到比输入值小的最大整百作为下界,上界直接取下界加100,再比较差值返回结果,不需要提前估算遍历范围:

def find_closest_hundred(num):
    # 提前记录符号,负数统一转绝对值计算后再还原
    flag = -1 if num < 0 else 1
    abs_num = abs(num)
    # 向下遍历找整百下界
    lower_bound = abs_num
    while lower_bound % 100 != 0:
        lower_bound -= 1
    upper_bound = lower_bound + 100
    # 比较差值返回结果
    if abs_num - lower_bound < upper_bound - abs_num:
        return flag * lower_bound
    return flag * upper_bound

常规场景测试结果:

  • 输入120返回100
  • 输入172返回200
  • 输入150返回200
  • 输入-240返回-200
  • 输入-260返回-300

for循环版本

先锁定遍历范围(输入值前后200的区间必然覆盖两个相邻整百边界),按100步长遍历所有候选整百值,实时记录差值最小的结果即可,不需要额外处理正负数符号:

def find_closest_hundred(num):
    res = None
    min_gap = float('inf')
    # 计算遍历起点,覆盖输入值前后足够范围
    traverse_start = (int(num) // 100) * 100 - 100
    # 遍历3个整百候选值即可覆盖所有情况
    for val in range(traverse_start, traverse_start + 300, 100):
        current_gap = abs(num - val)
        if current_gap < min_gap:
            min_gap = current_gap
            res = val
        elif current_gap == min_gap:
            # 差值相等时取更大的整百,需要取下界就改成min
            res = max(res, val)
    return res

如果你的业务规则对差值相等的场景有不同要求,只需要修改等值分支的判断逻辑即可。

内容的提问来源于stack exchange,提问作者user19430419

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:03:16