Float64 in golang



我目前正在用float64做一个简单的方差函数。然而,当用NaN结果划分float64时,我遇到了一个问题。在我的主循环中,我有一个简单的循环来求和所有数据减去平均值。在那之后,我用集装箱的长度来除法。有人知道我犯了什么错吗?

for _, letter := range floatContainer {
variance += VarSqrt(letter, average)
}
variance /= float64(len(floatContainer) - 1) <---- Here is the problem
func VarSqrt(n, mean float64) float64 {
return math.Sqrt(n - mean)
}

要计算方差,应该对所有数据求和,减去均方,而不是sqrt,数组的长度应该>1

这是的样本代码

func mean(nums []float64) float64 {
var s float64 = 0
for _, x := range nums {
s += x
}
return s / float64(len(nums))
}
func variance(nums []float64) float64 {
var res float64 = 0
var m = mean(nums)
var n = len(nums)
for _, x := range nums {
res += (x - m) * (x - m)
}
return res / float64(n-1)
}

最新更新