12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package common
- import (
- "math"
- "strconv"
- "strings"
- )
- // MoneyNegation 金额取反 负负得正
- func MoneyNegation(s string) string {
- switch {
- case s == "":
- return s
- case s[0] == '-':
- return s[1:]
- default:
- return "-" + s
- }
- }
- // IsAmountEqual 判断两个金额字符串是否相等
- func IsAmountEqual(amount1, amount2 string) bool {
- // 规范化金额字符串
- normalizedAmount1 := normalizeAmount(amount1)
- normalizedAmount2 := normalizeAmount(amount2)
- if normalizedAmount1 == "" {
- normalizedAmount1 = "0"
- }
- if normalizedAmount2 == "" {
- normalizedAmount2 = "0"
- }
- // 转换为浮点数进行比较
- value1, err1 := strconv.ParseFloat(normalizedAmount1, 64)
- value2, err2 := strconv.ParseFloat(normalizedAmount2, 64)
- // 如果任意一个转换失败,则认为不相等
- if err1 != nil || err2 != nil {
- return false
- }
- // 比较浮点数
- return math.Abs(value2-value1) < 0.0001
- }
- // normalizeAmount 规范化金额字符串
- func normalizeAmount(amount string) string {
- // 去掉逗号和多余的空格
- return strings.ReplaceAll(strings.TrimSpace(amount), ",", "")
- }
- // MoneyNormalize 金额标准化 "1,234.56" -> "1234.56"
- func MoneyNormalize(s string) string {
- return strings.ReplaceAll(s, ",", "")
- }
|