You need to enable JavaScript to run this app. Python中如何向上取整得到下一个末位为2的整数
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何向上取整得到下一个末位为2的整数

自定义整数取整实现方案

规则本质拆解

你给出的映射关系,对应的目标值是大于等于输入整数、形如10*k + 2(k为正整数)的最小值,目标序列为12、22、32、42、52…的公差为10的等差数列,并非常规取整场景下的“某数的倍数序列”,这也是之前参考的通用倍数取整方案无法适配的核心原因。

对所有给定示例逐一校验规则匹配度:

  • 输入10:序列中第一个大于等于10的值为12,匹配映射结果
  • 输入21:序列中第一个大于等于21的值为22,匹配映射结果
  • 输入22:序列中第一个大于等于22的值为22,匹配映射结果
  • 输入23:序列中第一个大于等于23的值为32,匹配映射结果
  • 输入34:序列中第一个大于等于34的值为42,匹配映射结果

实现逻辑推导

从不等式关系出发,找到最小正整数k满足10*k + 2 ≥ x,对不等式变形:

10*k ≥ x - 2
k ≥ ⌈(x-2)/10⌉

为避免浮点数取整的精度问题,可以用纯整数运算替代ceil计算:对于正整数分母10,向上取整等价于(x -2 + 10 -1) //10,化简后得到k的计算式为(x +7) //10。

代码实现

def custom_round(x: int) -> int:
    k = (x + 7) // 10
    return k * 10 + 2

配套的校验代码:

# 匹配示例的测试逻辑
test_inputs = [10, 21, 22, 23, 34]
expected_outputs = [12, 22, 22, 32, 42]
for inp, exp in zip(test_inputs, expected_outputs):
    result = custom_round(inp)
    assert result == exp, f"输入{inp} 计算得到{result},不符合预期{exp}"
print("全部示例校验通过")

内容的提问来源于stack exchange,提问作者Paweł Kowalski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 14:24:03