基于指定可选长度的线缆测量值智能取整需求咨询
该线缆取整需求可实现
完全可以按照你的要求实现测量值到指定线缆长度的取整,核心是基于给定的可选长度和±10浮动规则,明确每个测量值对应的目标长度区间,以下是具体的规则定义和实现逻辑:
规则对应区间(可选长度:40、60、80、120、300、500)
将可选长度按从小到大排序后,每个长度的覆盖区间及空白区间的处理规则如下:
- 40:测量值在
40-50(40±10,因测量值下限为40)时,取整为40 - 60:测量值在
51-70(60±10,与40区间衔接无重叠)时,取整为60 - 80:测量值在
71-90(80±10)时,取整为80 - 120:测量值在
110-130(120±10)时,取整为120 - 300:测量值在
290-310(300±10),以及131-289(120区间上限+1到300区间下限-1)时,取整为300 - 500:测量值在
490-500(500±10,因测量值上限为500),以及311-489(300区间上限+1到500区间下限-1)时,取整为500
示例验证
- 测量值121:落在120的覆盖区间(110-130),取整为120,符合要求
- 测量值131:超出120的区间上限,进入空白区间,取整为300,符合要求
- 测量值91:超出80的区间上限,进入空白区间,取整为120
- 测量值289:未进入300的区间下限,进入空白区间,取整为300
实现方式
不管用Excel公式、Python/Java等编程语言,都可以通过区间条件判断实现:
- 先将可选长度按顺序排列
- 对每个测量值,依次匹配对应的区间
- 若不在任何±10区间内,则向上匹配下一个可选长度
比如用Python实现的核心逻辑片段:
def round_cable_length(x): options = [40, 60, 80, 120, 300, 500] for i in range(len(options)): lower = options[i] - 10 upper = options[i] + 10 # 处理测量值的上下限边界 if i == 0: lower = max(lower, 40) if i == len(options)-1: upper = min(upper, 500) if lower <= x <= upper: return options[i] # 处理空白区间,向上匹配 if i < len(options)-1 and x > upper and x < options[i+1]-10: return options[i+1] return options[-1]
内容的提问来源于stack exchange,提问作者Erin
相关产品推荐
相关产品推荐

