zhangqian
2024-04-07 2234e8fa97e85e1e69a6f970416602f283e09df6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package utils
 
import "github.com/shopspring/decimal"
 
func Average(numbers []decimal.Decimal) decimal.Decimal {
    if len(numbers) == 0 {
        return decimal.Decimal{}
    }
    if len(numbers) == 1 {
        return numbers[0]
    }
    var sum decimal.Decimal
    for _, d := range numbers {
        sum = sum.Add(d)
    }
    return sum.Div(decimal.NewFromInt(int64(len(numbers))))
}
 
func Deviation(numbers []decimal.Decimal) decimal.Decimal {
    if len(numbers) == 0 || len(numbers) == 1 {
        return decimal.Decimal{}
    }
    avgNum := Average(numbers)
    var diffSquaredSum decimal.Decimal
    for _, n := range numbers {
        diff := n.Sub(avgNum)
        diffSquaredSum = diffSquaredSum.Add(diff.Mul(diff))
    }
    return diffSquaredSum.Div(decimal.NewFromInt(int64(len(numbers))))
}