namespace DS.Module.Core; /// /// Decimal 工具类 /// public static class DecimalUtil { /// /// 获得decimal的精度 /// /// /// public static int Precise(this decimal value) { var s = value.ToString(); if (!s.Contains('.')) { return 0; } return s.Length - s.IndexOf('.') - 1; } /// /// 检查金额, 最大值为8位数字 /// /// 金额 /// 标题 /// 是否忽略最大值检查 默认为否 /// 小数位数 /// public static (bool isSuccess, string errMsg) CheckMoney(this decimal money, string title, bool ignoreMax = false, int maxDigit = 8, int digit = 3) { // 0或者负数检查 if (money <= 0M) { return (false, $"{title}不为0或负"); } // 最大值检查 if (!ignoreMax) { decimal maximum = NumberConst.MAX_8; switch (maxDigit) { case 5: maximum = NumberConst.MAX_5; break; default: maximum = NumberConst.MAX_8; break; } if (money > maximum) { return (false, $"{title}不能超过最大值"); } } // 两位有效小数检查 int precise = money.Precise(); if (precise > digit) { return (false, $"{title}位数超出范围"); //return (false, $"{title}最多有两位小数"); } return (true, string.Empty); } }