一、C# 内置类型的字母格式
字符串格式符号 | 说明 | 代码示例 | 输出 |
---|---|---|---|
C | 货币 | 4.5.ToString(“C”) | ¥4.50 |
D | 十进制 | 45.ToString(“D5”) | 00045 |
E | 科学计数法 | 45000.ToString(“E”) | 4.500000E+005 |
F | 固定小数点位数 | 45.ToString(“F3”) | 45.00 |
G | 常规 | 4.5.ToString(“G”) | 4.5 |
N | 数值 | 4500000.ToString(“N”) | 4,500,000.00 |
X | 16进制 | 255.ToString(“X”) | FF |
参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings
二、使用前导零(0)将整数填充到特定的长度
方法1: 使用ToString方法,10进制则使用ToString(“Dn”), 16进制则使用ToString(“Xn”),其中n代表字符串的最小长度。
byte byteValue = 254;
//10进制 填充总长度为5 00254
byteValue.ToString("D5");
//16进制 填充总长度为5 000FE
byteValue.ToString("X5");
方法2:使用String.Format设置格式
格式说明符 | 说明 | 代码示例 | 输出 |
---|---|---|---|
“0” | 零占位符 | 1234.5678(“00000”) | 01235 |
“#” | 数字占位符 | 1234.5678("#####") | 1235 |
“.“”” | 小数点 | 0.45678(0.00) | 0.46 |
“,” | 组分割符和数字比例换算 | ||
“%” | 百分比占位符 | 0.3697("##.0 %",en-US) | 37.0% |
具体说明:
1、“0”自定义说明符: 长度不足的话,则用“0”补齐。
double value;
value = 123;
Console.WriteLine(value.ToString("00000"));
Console.WriteLine(String.Format("{0:00000}", value));
// Displays 00123
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
CultureInfo daDK = CultureInfo.CreateSpecificCulture("da-DK");
Console.WriteLine(value.ToString("00.00", daDK));
Console.WriteLine(String.Format(daDK, "{0:00.00}", value));
// Displays 01,20
value = 1234567890;
Console.WriteLine(value.ToString("0,0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0}", value));
// Displays 1,234,567,890
value = 1234567890.123456;
Console.WriteLine(value.ToString("0,0.0", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0,0.0}", value));
// Displays 1,234,567,890.1
2、“#”自定义说明符:#号格式的位置有有效数字才会复制到字符串中
请注意,如果零不是有效数字,此说明符永不显示零,即使零是字符串中的唯一数字也是如此。 仅当零是所显示的数字中的有效数字时,才会显示零。
double value;
value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:#.##}", value));
// Displays 1.2
value = 123;
Console.WriteLine(value.ToString("#####"));
Console.WriteLine(String.Format("{0:#####}", value));
// Displays 123
value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
Console.WriteLine(String.Format("{0:[##-##-##]}", value));
// Displays [12-34-56]
value = 1234567890;
Console.WriteLine(value.ToString("#"));
Console.WriteLine(String.Format("{0:#}", value));
// Displays 1234567890
3、“.”自定义说明符:在结果字符串中插入本地化的小数分隔符。
double value;
value = 1.2;
Console.WriteLine(value.ToString("0.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:0.00}", value));
// Displays 1.20
Console.WriteLine(value.ToString("00.00", CultureInfo.InvariantCulture));
Console.WriteLine(String.Format(CultureInfo.InvariantCulture,
"{0:00.00}", value));
// Displays 01.20
参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/custom-numeric-format-strings#Specifier0
三、保留N位小数位数
1、使用 Math.Round() 方法
double double1_1 = Math.Round(1.545, 0); //2.0
double double1_2 = Math.Round(1.545, 1); //1.5
double double1_3 = Math.Round(1.545, 2); //1.54
double double1_4 = Math.Round(1.5451, 2); //1.55
double double1_5 = Math.Round(1.546, 2); //1.55
2、使用 ToString() + NumberFormatInfo
NumberFormatInfo nfi3_1 = new NumberFormatInfo();
nfi3_1.NumberDecimalDigits = 0;
string str3_1 = 1.545d.ToString("N", 0); //"2"
nfi3_1.NumberDecimalDigits = 1;
string str3_2 = 1.545d.ToString("N", nfi3_1); //"1.5"
nfi3_1.NumberDecimalDigits = 2;
string str3_3 = 1.545d.ToString("N", nfi3_1); //"1.55"
nfi3_1.NumberDecimalDigits = 2;
string str3_4 = 1.5451d.ToString("N", nfi3_1); //"1.55"
nfi3_1.NumberDecimalDigits = 2;
string str3_5 = 1.546d.ToString("N", nfi3_1); //"1.55"
3、使用 ToString() + 格式化字符
string str4_1_1 = 1.545d.ToString("N0"); //"2"
string str4_1_2 = 1.545d.ToString("N1"); //"1.5"
string str4_1_3 = 1.545d.ToString("N2"); //"1.55"
string str4_1_4 = 1.5451d.ToString("N2"); //"1.55"
string str4_1_5 = 1.546d.ToString("N2"); //"1.55"
//ToString() 的简单方法
string str4_2_6 = 1.545d.ToString("0"); //"2"
string str4_2_7 = 1.545d.ToString("0.0"); //"1.5"
string str4_2_8 = 1.545d.ToString("0.00"); //"1.55"
string str4_2_9 = 1.5451d.ToString("0.00"); //"1.55"
string str4_2_10 = 1.546d.ToString("0.00"); //"1.55"
4、使用 String.Format() 方法
string str5_1 = string.Format("{0:N0}", 1.545d); //"2"
string str5_2 = string.Format("{0:N1}", 1.545d); //"1.5"
string str5_3 = string.Format("{0:N2}", 1.545d); //"1.55"
string str5_4 = string.Format("{0:N2}", 1.5451d); //"1.55"
string str5_5 = string.Format("{0:N2}", 1.546d); //"1.55"