| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package zxcvbn_math
- import "math"
- /**
- I am surprised that I have to define these. . . Maybe i just didn't look hard enough for a lib.
- */
- //http://blog.plover.com/math/choose.html
- 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
- }
- 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
- }
|