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

Kotlin如何创建指定步长的Double类型数值范围列表?

Kotlin生成指定步长的Double列表问题

你的代码报错是因为Kotlin中用..创建的浮点数区间(比如Double类型的ClosedFloatingPointRange)没有step扩展函数——step只支持整数类型的区间(Int、Long等)来生成数列。

以下是两种可行的实现方式:

方式一:用generateSequence生成(推荐)

通过生成序列的方式,从起始值开始每次累加步长,直到超过结束值为止,最后转成列表:

val heightOptionsInCm: List<Double> = generateSequence(92.0) { it + 1.5 }
    .takeWhile { it <= 214.50 + 1e-10 } // 加极小值处理浮点数精度误差
    .toList()
  • 优点:逻辑直观,自动处理边界,避免手动计算元素个数的麻烦;
  • 加1e-10是为了防止浮点数累加时的精度问题(比如214.5可能被计算成214.49999999999997,导致被takeWhile过滤掉)。

方式二:计算元素个数后用map生成

先算出区间内的元素总数,再通过索引映射生成每个值:

val start = 92.0
val end = 214.50
val step = 1.5
val count = ((end - start) / step).toInt() + 1 // 计算元素个数
val heightOptionsInCm: List<Double> = (0 until count).map { start + step * it }
  • 注意:这种方式依赖浮点数除法的精度,如果(end - start)不能被step整除,可能会少生成一个元素,需要根据实际情况调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:49:59