planetmint-go/util/rddl_token.go
Jürgen Eckel 75f1444c81
* added a MqttMonitor modul with levelDB and periodic cleanup
* initialized in the app
* passed to dao keeper
* added conversion methods (string2unixtime, byte ToJSON)
* removed obsolete keeper code
* maded  RDDLToken.Factor public

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
2024-04-04 13:57:34 +02:00

50 lines
1.0 KiB
Go

package util
import (
"strconv"
)
const (
Factor = 100000000.0
)
func RDDLToken2Uint(amount float64) uint64 {
return uint64(amount * Factor)
}
func RDDLToken2Float(amount uint64) float64 {
return float64(amount) / Factor
}
func RDDLTokenStringToFloat(amount string) (amountFloat float64, err error) {
amountFloat, err = strconv.ParseFloat(amount, 64)
return amountFloat, err
}
func RDDLTokenStringToUint(amount string) (amountUint uint64, err error) {
amountFloat, err := RDDLTokenStringToFloat(amount)
if err == nil {
amountUint = RDDLToken2Uint(amountFloat)
}
return amountUint, err
}
func addPrecision(valueString string) string {
length := len(valueString)
if length > 8 {
return valueString[:length-8] + "." + valueString[length-8:]
}
resultString := "0."
for i := 0; i < 8-length; i++ {
resultString += "0"
}
return resultString + valueString
}
func UintValueToRDDLTokenString(value uint64) (rddlString string) {
uint64String := strconv.FormatUint(value, 10)
rddlString = addPrecision(uint64String)
return
}