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

无jot工具时生成包含上下限的等间隔整数序列方法

解决方法

因为seq只能使用整数步长,当(high-low)无法被n-1整除时,整数除法会截断小数部分,导致序列无法覆盖到上限值。下面提供两种无需额外安装工具的方法,均能生成包含首尾边界的整数序列:

方法1:使用awk(推荐)

awk支持浮点运算,可以准确计算每个序列值并四舍五入取整,和jot的行为完全一致:

low=10
high=100
n=8
awk -v low="$low" -v high="$high" -v n="$n" 'BEGIN{for(i=0;i<n;i++) print int(low + i*(high-low)/(n-1) + 0.5)}'

运行结果:

10
23
36
49
61
74
87
100

方法2:纯Bash结合bc

利用bc处理浮点计算,再通过printf四舍五入取整:

low=10
high=100
n=8
for ((i=0; i<n; i++)); do
    val=$(echo "scale=5; $low + $i*($high-$low)/($n-1)" | bc)
    printf "%.0f\n" "$val"
done

运行结果和上述awk方法一致。

原理说明

两种方法的核心都是基于公式:第i个值 = low + i*(high-low)/(n-1)(i从0到n-1),通过浮点计算避免整数除法的精度丢失,再通过四舍五入得到整数结果,确保最后一个值恰好等于high。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:50:39