【问题标题】:Groovy: Compare float values and find out greater valueGroovy:比较浮点值并找出更大的值
【发布时间】:2021-07-12 16:59:44
【问题描述】:

我有一个浮点值和一个浮点值列表,我想将浮点值与列表进行比较,并找出大于浮点值和大于列表的浮点值整数的值。

例如:

简历 = 1.5

av = [1.1,1.5,1.7,1.9,1.11,2.1,2.5]

当前代码:

versions = av.findAll {
def isVersionGreater
it.indexed().any { i, v ->
if (cv[i] == v) return false
isVersionGreater = v > (cv[i] ?: 0)
return true
}
return isVersionGreater
}
versions.removeAll { it[0] > cv[0] }
versions.collect { it.join('.') }

打印[1.7,1.9,1.11],但我不想要1 的值,我只想比较并找出[2.1,2.5] 而不是其他值。

注意:我正在收集变量 av 和 cv 如下


av = output2.tokenize().collect { it.tokenize('.').collect { it as int } } 

cv = output.tokenize().collect { it.tokenize('.').collect { it as int } }.first()

有人可以帮助我使用 groovy 实现这一目标吗?

【问题讨论】:

  • 显示 output 和 output2 的值示例并提供相应的预期结果。
  • 输出 = [1.5] 输出2 = [1.1,1.5,1.7,1.9,1.11,2.1,2.5]。 Cv=[1,5], av = [1,1][1,5][1,7][1,11][2,1][2,5]。我只想从 output2 中获取 [2.1,2.5]。我已将我当前的输出粘贴到问题中
  • 你说cv = 1.5,后来又说cv[i] == vcv[i] 是可疑的。 cvString 还是 Number

标签: groovy jenkins-groovy


【解决方案1】:

使用<= 代替>

versions.removeAll { it[0] <= cv[0] }
print versions.collect { it.join('.') }

这意味着从it中删除所有第一个值小于或等于cv的第一个值。

输出:

[2.1, 2.5]

【讨论】:

  • 你太棒了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多