using System; namespace Binance.TradeRobot.Common.Extensions { public static class MathExtension { /// <summary> /// 四舍五入保留小数 /// </summary> /// <param name="d"></param> /// <param name="length">保留的位数</param> /// <returns></returns> public static decimal Round(this decimal d, int length) { return Math.Round(d, length, MidpointRounding.AwayFromZero); } /// <summary> /// string转换decimal /// </summary> /// <param name="s"></param> /// <param name="length"></param> /// <returns></returns> public static decimal ToDecimal(this string s, int? length = null) { if (!decimal.TryParse(s, out decimal d)) return 0M; if (length != null) return d.Round(length.Value); return d; } /// <summary> /// 截取小数位数,不进行四舍五入 /// </summary> /// <param name="d"></param> /// <param name="length">截取的位数</param> /// <returns></returns> public static decimal CutDecimal(this decimal d, int length) { var dStr = d.ToString(); var dotIndex = dStr.IndexOf("."); var cutLength = dotIndex + 1 + length; if (dotIndex == -1 || dStr.Length <= cutLength) dStr = string.Format($"{{0:F{length}}}", d); else dStr = dStr.Substring(0, cutLength); return decimal.Parse(dStr); } } }