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

如何将0-1区间内的数值按指定网格大小对齐到对应网格点

0~1区间数值按指定网格大小对齐实现方案

核心规则说明

设指定的网格大小为m:

  • 相邻网格点的固定间隔为 step = 1/(m-1)
  • 所有可对齐的网格点为 k * step,其中 k 为取值范围在0 ~ m-1的整数,总共有m个点,和需求示例完全匹配:
    • m=2时,step=1,对应点0、1
    • m=3时,step=0.5,对应点0、0.5、1
    • m=4时,step≈0.333,对应点0、0.33、0.66、1

对齐算法步骤

  • 将输入的0~1区间数值x除以间隔step,得到商值
  • 对商值做四舍五入取整,得到对应网格点的索引k
  • 对k做边界裁剪,限制在0 ~ m-1区间内,避免浮点数精度问题导致结果超出0或1的范围
  • 最终对齐结果为 k * step,如果需要保留2位小数可以额外做精度处理

代码示例(Python)

def align_to_grid(x: float, grid_size: int, decimal: int = None) -> float:
    if grid_size < 2:
        raise ValueError("网格大小不能小于2")
    if not 0 <= x <= 1:
        raise ValueError("输入数值必须在0~1区间内")
    step = 1 / (grid_size - 1)
    k = round(x / step)
    # 边界裁剪避免越界
    k = max(0, min(k, grid_size - 1))
    res = k * step
    return round(res, decimal) if decimal else res

测试用例效果

  • 输入x=0.3,grid_size=2,返回1.0
  • 输入x=0.2,grid_size=3,返回0.0;输入x=0.6,grid_size=3,返回0.5
  • 输入x=0.5,grid_size=4,decimal=2,返回0.67(如果要截断为0.66可以调整取整逻辑为int向下取整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:36:03