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);
}
}
}