func (c Test) add(str1 string, str2 string) dec.Dec { dec1 := dec.Dec{} dec1.SetString(str1) dec2 := dec.Dec{} dec2.SetString(str2) result := dec.Dec{} result.Add(&dec1, &dec2) return result }
func (c MathUtil) Add(str1 string, str2 string) string { dec1 := dec.Dec{} dec1.SetString(str1) dec2 := dec.Dec{} dec2.SetString(str2) result := dec.Dec{} result.Add(&dec1, &dec2) return result.String() }
/** return x / y */ func (c MathUtil) Quo(str1 string, str2 string, scaler dec.Scaler, rounder dec.Rounder) string { dec1 := dec.Dec{} dec1.SetString(str1) dec2 := dec.Dec{} dec2.SetString(str2) result := dec.Dec{} result.Quo(&dec1, &dec2, scaler, rounder) return result.String() }
func NewFundraiserTransaction(addr Address, value int64, time int64) (*FundraiserTransaction, error) { tx := &FundraiserTransaction{ Addr: addr.Addr, Time: time, } // Base line amount bought from fundraiser, 1 btc gets you 100 msc mastercoinBought := dec.NewDecInt64((value * 100)) mastercoinBought.Quo(mastercoinBought, dec.NewDecInt64(1e8), dec.Scale(18), dec.RoundHalfUp) fmt.Println("Baseline MSC Bought:", mastercoinBought) // Bonus amount received diff := dec.NewDecInt64(FundraiserEndTime - time) timeDifference := diff.Quo(diff, dec.NewDecInt64(604800), dec.Scale(18), dec.RoundHalfUp) fmt.Println("Time difference", timeDifference) if timeDifference.Cmp(dec.NewDecInt64(0)) > 0 { // bought += bought * (timediff * 0.1) x := new(dec.Dec) x.SetString("0.1") ratio := new(dec.Dec).Mul(timeDifference, x) fmt.Println("Ratio:", ratio) bonus := new(dec.Dec).Mul(ratio, mastercoinBought) bonus.Round(bonus, dec.Scale(18), dec.RoundDown) mastercoinBought.Add(mastercoinBought, bonus) mastercoinBought.Round(mastercoinBought, dec.Scale(8), dec.RoundHalfUp) } tx.Value = mastercoinBought Logger.Println("Created fundraiser transaction", tx) return tx, nil }
func (c Test) getDec(str string) dec.Dec { result := dec.Dec{} result.SetString(str) return result }
func DecFromString(input string) *dec.Dec { x := new(dec.Dec) x.SetString(input) return x }