using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Pcb.Common.Extension { public static class NumberExtension { private const string QFW_FORMAT_TWO_DIGITAL = "N2"; private const string QFW_FORMAT_ZERO_DIGITIAL = "N0"; //private const decimal THRESHOLD_VALUE = 1000; //public static string ToQswString(this decimal? value) //{ // if (value == null) // { // return string.Empty; // } // return value.Value < THRESHOLD_VALUE ? value.Value.ToString("F2") : value.Value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQswString(this int? value) //{ // if (value == null) // { // return string.Empty; // } // return value.Value < THRESHOLD_VALUE ? value.Value.ToString() : value.Value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQswString(this decimal value) //{ // return value < THRESHOLD_VALUE ? value.ToString("F2") : value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQswString(this int value) //{ // return value < THRESHOLD_VALUE ? value.ToString() : value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQfwStringWithOptionDigital(this decimal? value) //{ // if (value == null) // { // return string.Empty; // } // return value.Value == 0 ? ZERO : value.Value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQfwStringWithOptionDigital(this int? value) //{ // if (value == null) // { // return string.Empty; // } // return value.Value == 0 ? ZERO : value.Value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQfwStringWithOptionDigital(this decimal value) //{ // return value == 0 ? ZERO : value.ToString(QFW_FORMAT_TWO_DIGITAL); //} //public static string ToQfwStringWithOptionDigital(this int value) //{ // return value == 0 ? ZERO : value.ToString(QFW_FORMAT_TWO_DIGITAL); //} /// /// 获取千分位数据。如果传入数据为空,那么不显示。如果传入的数据有小数点,那么显示带2位小数的数据。如果传入的数据没有小数点,那么显示整形的数据。 /// /// /// public static string ToQfwOrEmptyString(this decimal? value) { if (value == null) { return string.Empty; } return value.Value == (Int64)value.Value ? value.Value.ToString(QFW_FORMAT_ZERO_DIGITIAL) : value.Value.ToString(QFW_FORMAT_TWO_DIGITAL); } /// /// 获取千分位数据。如果传入数据为空,那么显示0。如果传入的数据有小数点,那么显示带2位小数的数据。如果传入的数据没有小数点,那么显示整形的数据。 /// /// /// public static string ToQfwOrZeroString(this decimal? value) { if (value == null) { value = 0; } return ToQfwOrEmptyString(value); } /// /// 获取千分位数据。 /// /// /// public static string ToQfwString(this int value) { return value.ToString(QFW_FORMAT_ZERO_DIGITIAL); } /// /// 获取千分位数据。 /// /// /// public static string ToQfwString(this decimal value) { return value == (Int64)value ? value.ToString(QFW_FORMAT_ZERO_DIGITIAL) : value.ToString(QFW_FORMAT_TWO_DIGITAL); } /// /// 10进制转换指定进制 /// /// 十进制整数 /// 进制字符串 /// public static string _ToHex(this int Num, string HexList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ") { var ostr = new List(); int c = HexList.Length; while (Num >= c) { var m = Num % c; var x = (Num - m) / c; ostr.Add(HexList[m]); Num = x; } ostr.Add(HexList[Num]); ostr.Reverse(); return string.Join("", ostr); } /// /// 10进制转换16进制 /// /// 十进制整数 /// 进制字符串 /// public static string _ToHex16(this int Num, string HexList = "0123456789ABCDEF") { return Num._ToHex(HexList); } /// /// 10进制转换Excel表列进制 /// /// 十进制整数 /// 进制字符串 /// public static string _ToHexExcelColumn(this int Num, string HexList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ") { string ostr = string.Empty; if (Num < 26) { ostr = Num._ToHex(HexList); return ostr; } Num = Num - 26; if (Num < 676) { ostr = Num._ToHex(HexList); return "A"._CopyAndJoin(2 - ostr.Length) + ostr; } Num = Num - 676; if (Num < 17576) { ostr = Num._ToHex(HexList); return "A"._CopyAndJoin(3 - ostr.Length) + ostr; } Num = Num - 17576; if (Num < 456976) { ostr = Num._ToHex(HexList); return "A"._CopyAndJoin(4 - ostr.Length) + ostr; } return Num._ToHex(HexList); } } }