自定义数字格式字符串:
"," 字符可作为千位分隔符说明符和数字比例换算说明符。
千位分隔符说明符:如果在两个设置数字的整数位格式的数字占位符(0 或 #)之间指定一个或多个“,”,则在输出的整数部分中的每个数字组之间插入一个组分隔符。
当前 NumberFormatInfo 对象的 NumberGroupSeparator 和 NumberGroupSizes 属性将确定用作数字组分隔符的字符以及每个数字组的大小。例如,如果使用字符串“#,##0”和固定区域性对数字 1000 进行格式化,则输出为“1,000”。
数字比例换算说明符:如果在紧邻显式或隐式小数点的左侧指定一个或多个“,”字符,则每出现一个数字比例换算说明符便将要格式化的数字除以 1000。例如,如果使用字符串“#,##0,,”和固定区域性对数字 1234567890 进行格式化,则输出为“1,235”。
公式:
Number.ToString("#,##0") == Decimal.Divide(Number,1).ToString("#,##0"));
Number.ToString("#,##0,") == Decimal.Divide(Number,1000).ToString("#,##0"));
Number.ToString("#,##0,,") == Decimal.Divide(Number,1000000).ToString("#,##0")); ... ...
"%" 百分比占位符
double value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
// Displays 8.6%
E0, E+0, E-0, e0, e+0, e-0 科学记数法
double value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
// Displays 8.6E+4
Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
// Displays 8.6E+004
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
// Displays 8.6E-004
";" 部分分隔符
可以根据值为正、为负还是为零来为字符串应用不同的格式化。为产生这种行为,自定义格式字符串可以包含最多三个用分号分隔的部分。
double myPos = 19.95, myNeg = -19.95, myZero = 0.0;
string MyString = myPos.ToString("¥#,##0.00;¥-#,##0.00;Zero");
// MyString has the value: ¥19.95.
MyString = myNeg.ToString("¥#,##0.00;¥-#,##0.00;Zero");
// MyString has the value: ¥-19.95.
MyString = myZero.ToString("¥#,##0.00;¥-#,##0.00;Zero/0.00");
// MyString has the value: Zero/0.00.