gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

big.go (612B)


      1 package humanize
      2 
      3 import (
      4 	"math/big"
      5 )
      6 
      7 // order of magnitude (to a max order)
      8 func oomm(n, b *big.Int, maxmag int) (float64, int) {
      9 	mag := 0
     10 	m := &big.Int{}
     11 	for n.Cmp(b) >= 0 {
     12 		n.DivMod(n, b, m)
     13 		mag++
     14 		if mag == maxmag && maxmag >= 0 {
     15 			break
     16 		}
     17 	}
     18 	return float64(n.Int64()) + (float64(m.Int64()) / float64(b.Int64())), mag
     19 }
     20 
     21 // total order of magnitude
     22 // (same as above, but with no upper limit)
     23 func oom(n, b *big.Int) (float64, int) {
     24 	mag := 0
     25 	m := &big.Int{}
     26 	for n.Cmp(b) >= 0 {
     27 		n.DivMod(n, b, m)
     28 		mag++
     29 	}
     30 	return float64(n.Int64()) + (float64(m.Int64()) / float64(b.Int64())), mag
     31 }