github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/store/mainchain/account_level/level_math_test.go (about) 1 package account_level 2 3 import ( 4 "fmt" 5 "math/big" 6 "testing" 7 ) 8 9 func TestAA(t *testing.T) { 10 l, _ := big.NewInt(0).SetString("100000000000000000000000000", 10) 11 r := big.NewInt(30) 12 13 /*lf := big.NewFloat(0).SetInt(l) 14 rf := big.NewFloat(0).SetInt(r)*/ 15 16 //rat := big.NewRat(0, 1).SetFrac(l, r) 17 18 yl := new(big.Rat).SetInt(l) 19 tl := new(big.Rat).SetInt(r) 20 fmt.Println(yl, tl) 21 fmt.Println(tl.Sub(tl, yl)) 22 rat := big.NewRat(18, 10) 23 24 m := new(big.Rat) 25 rTmp := m.Mul(yl, rat).Mul(m, big.NewRat(1, 8640)) 26 27 rfTmp := big.NewFloat(0).SetRat(rTmp) 28 rfTmp.Uint64() 29 fmt.Println("float string:", rfTmp.Prec()) 30 31 b, oc := rfTmp.Int(big.NewInt(0)) 32 fmt.Println(rTmp) 33 fmt.Println(b, oc) 34 fmt.Println(30000 * 10000000000 * 8640 * 2) 35 36 } 37 func TestPer(t *testing.T) { 38 dis := []*big.Int{ 39 big.NewInt(1000000), 40 big.NewInt(2000000), 41 big.NewInt(3000000), 42 big.NewInt(2000000), 43 big.NewInt(1000000), 44 big.NewInt(2000000), 45 big.NewInt(3000000), 46 big.NewInt(2000000), 47 big.NewInt(1000000), 48 } 49 math := newLvlMath(1, 1) 50 bl := math.pull(1, big.NewInt(25000)) 51 if bl { 52 r := math.r() 53 m := math.m(r) 54 d := math.d(r) 55 amouts := math.v(r, m, d, dis) 56 fmt.Println("No.1:", r, m, d, amouts) 57 } 58 59 bl = math.pull(2, big.NewInt(30000)) 60 if bl { 61 r := math.r() 62 m := math.m(r) 63 d := math.d(r) 64 amouts := math.v(r, m, d, dis) 65 fmt.Println("No.2:", r, m, d, amouts) 66 } 67 bl = math.pull(3, big.NewInt(40000)) 68 if bl { 69 r := math.r() 70 m := math.m(r) 71 d := math.d(r) 72 amouts := math.v(r, m, d, dis) 73 fmt.Println("No.3:", r, m, d, amouts) 74 } 75 bl = math.pull(4, big.NewInt(50000)) 76 if bl { 77 r := math.r() 78 m := math.m(r) 79 d := math.d(r) 80 amouts := math.v(r, m, d, dis) 81 fmt.Println("No.4:", r, m, d, amouts) 82 } 83 bl = math.pull(5, big.NewInt(60100)) 84 if bl { 85 r := math.r() 86 m := math.m(r) 87 d := math.d(r) 88 amouts := math.v(r, m, d, dis) 89 fmt.Println("No.5:", r, m, d, amouts) 90 } 91 bl = math.pull(6, big.NewInt(50000)) 92 if bl { 93 r := math.r() 94 m := math.m(r) 95 d := math.d(r) 96 amouts := math.v(r, m, d, dis) 97 fmt.Println("No.6:", r, m, d, amouts) 98 } 99 }