zxcvbn-go/utils/math/mathutils.go

41 lines
693 B
Go
Raw Normal View History

package zxcvbnmath
2016-01-13 22:49:04 +00:00
import "math"
/*
NChoseK http://blog.plover.com/math/choose.html
I am surprised that I have to define these. . . Maybe i just didn't look hard enough for a lib.
2016-01-13 22:49:04 +00:00
*/
func NChoseK(n, k float64) float64 {
if k > n {
return 0
} else if k == 0 {
return 1
}
var r float64 = 1
for d := float64(1); d <= k; d++ {
r *= n
r /= d
n--
}
return r
}
// Round a number
func Round(val float64, roundOn float64, places int) (newVal float64) {
var round float64
pow := math.Pow(10, float64(places))
digit := pow * val
_, div := math.Modf(digit)
if div >= roundOn {
round = math.Ceil(digit)
} else {
round = math.Floor(digit)
}
newVal = round / pow
return
2016-01-13 22:49:04 +00:00
}