1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 00:22:41 +08:00

金额转换

This commit is contained in:
2022-03-27 10:19:33 +08:00
parent 176cd0575d
commit aff81b33cd
2 changed files with 76 additions and 0 deletions

29
currency/amountConvert.go Normal file
View File

@ -0,0 +1,29 @@
package currency
import (
"strconv"
"github.com/shopspring/decimal"
)
// @title 分转换为元
// @param cent 金额分
// @return 字符串表示的元
func CentToDollar(cent int32) string {
d := decimal.New(1, 2)
result := decimal.NewFromInt32(cent).DivRound(d, 2).StringFixedBank(2)
return result
}
// 元转换为分
func DollarToCent(dollar string) int64 {
p, _ := strconv.ParseFloat(dollar, 64)
d := decimal.New(1, 2)
df := decimal.NewFromFloat(p).Mul(d).IntPart()
return df
}

View File

@ -0,0 +1,47 @@
package currency
import (
"testing"
)
func TestCentToDollar(t *testing.T) {
cases := []struct {
cent int32
excepted string
}{
{24040, "240.40"},
{99999940, "999999.40"},
{99999, "999.99"},
{1, "0.01"},
{99999901, "999999.01"},
{100000099, "1000000.99"},
}
for _, c := range cases {
result := CentToDollar(c.cent)
if result != c.excepted {
t.Fatalf("dollar to cent failed, dollar:%d execpted:%s result:%s", c.cent, c.excepted, result)
}
}
}
func TestDollarToCent(t *testing.T) {
cases := []struct {
dollar string
excepted int64
}{
{"240.40", 24040},
{"999999.40", 99999940},
{"999.99", 99999},
{"0.01", 1},
{"999999.01", 99999901},
{"1000000.99", 100000099},
}
for _, c := range cases {
result := DollarToCent(c.dollar)
if result != c.excepted {
t.Fatalf("dollar to cent failed, dollar:%s execpted:%d result:%d", c.dollar, c.excepted, result)
}
}
}