gpt4 book ai didi

go - 寻找低于零的最大值

转载 作者:行者123 更新时间:2023-12-03 08:19:57 25 4
gpt4 key购买 nike

我正在尝试从差异 n[i] - n[i-1] 时间序列中获取最大值。 slice 中的第一个值始终为零,代码如下:

func MaxBelowZero(n ...float64) float64 {
var maxValue float64
if len(n) == 1 {
return n[0]
} else if len(n) == 0 {
return 0.
}
for i := range n {
if i == 0 {
maxValue = math.SmallestNonzeroFloat64
continue
}
if maxValue < n[i] && n[i] < 0 {
maxValue = n[i]
}
}
return maxValue
}

var sliceTest = []float64{0, 1, 2, -1, -2, -10, 10, 20}
MaxBelowZero(sliceTest...)
Output: 5e-324

它应该是-1。我究竟做错了什么?我希望得到一些帮助。 Playground 上的代码:link

最佳答案

math.Smallest Nonzero Float64 是最接近 0 但不为 0 的数字,而不是距离零最远的数字。试试这个:

go playground

func MaxBelowZero(values ...float64) float64 {
if len(values) == 0 {
return 0
} else if len(values) == 1 {
return values[0]
}
max := -math.MaxFloat64
for _, n := range values {
if n >= 0 {
continue
}
if n > max {
max = n
}
}
return max
}

关于go - 寻找低于零的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68170365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com