mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 00:22:41 +08:00
金额转换
This commit is contained in:
29
currency/amountConvert.go
Normal file
29
currency/amountConvert.go
Normal 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
|
||||
}
|
47
currency/amountConvert_test.go
Normal file
47
currency/amountConvert_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user