cubefs
31 строка · 612.0 Байт
1package humanize
2
3import (
4"math/big"
5)
6
7// order of magnitude (to a max order)
8func oomm(n, b *big.Int, maxmag int) (float64, int) {
9mag := 0
10m := &big.Int{}
11for n.Cmp(b) >= 0 {
12n.DivMod(n, b, m)
13mag++
14if mag == maxmag && maxmag >= 0 {
15break
16}
17}
18return 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)
23func oom(n, b *big.Int) (float64, int) {
24mag := 0
25m := &big.Int{}
26for n.Cmp(b) >= 0 {
27n.DivMod(n, b, m)
28mag++
29}
30return float64(n.Int64()) + (float64(m.Int64()) / float64(b.Int64())), mag
31}
32