更新:2011 年 3 月
标准数字格式字符串用于格式化通用数值类型。@H_403_6@ 标准数字格式字符串采用 Axx@H_403_6@ 的形式,其中 A@H_403_6@ 是称为格式说明符的字母型字符,xx@H_403_6@ 是称为精度说明符的可选整数。@H_403_6@ 精度说明符的范围从 0 到 99,并且影响结果中的位数。@H_403_6@ 任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。@H_403_6@ 有关更多信息,请参见自定义数字格式字符串@H_403_6@。@H_403_6@
所有数字类型的 ToString@H_403_6@@H_403_6@ 方法的某些重载支持标准数字格式字符串。@H_403_6@ 例如,可将数字格式字符串提供给 Int32@H_403_6@ 类型的 ToString(String)@H_403_6@ 方法和 ToString(String,IFormatProvider)@H_403_6@ 方法。@H_403_6@ .NET Framework 复合格式化功能也支持标准数字格式字符串,该功能由 Console@H_403_6@ 和 StreamWriter@H_403_6@ 类的某些 Write@H_403_6@@H_403_6@ 和 WriteLine@H_403_6@@H_403_6@ 方法、String.Format@H_403_6@ 方法以及 StringBuilder.AppendFormat@H_403_6@ 方法使用。@H_403_6@
下表描述标准的数字格式说明符并显示由每个格式说明符产生的示例输出。@H_403_6@ 有关使用标准数字格式字符串的其他信息,请参见注释一节;有关使用方法的完整演示,请参见示例一节。@H_403_6@
格式说明符@H_403_6@ |
Name@H_403_6@ |
说明@H_403_6@ |
示例@H_403_6@ |
---|---|---|---|
“C”或“c”@H_403_6@ |
Currency@H_403_6@ |
结果:货币值。@H_403_6@ 精度说明符:小数位数。@H_403_6@ 默认值精度说明符:由 System.Globalization.NumberFormatInfo@H_403_6@ 定义。 @H_403_6@ 更多信息:货币(“C”)格式说明符。@H_403_6@ |
123.456 ("C",en-US) -> $123.46@H_403_6@ 123.456 ("C",fr-FR) -> 123,46 €@H_403_6@ 123.456 ("C",ja-JP) -> ¥123@H_403_6@ -123.456 ("C3",en-US) -> ($123.456)@H_403_6@ -123.456 ("C3",fr-FR) -> -123,456 €@H_403_6@ -123.456 ("C3",ja-JP) -> -¥123.456@H_403_6@ |
"D"或"d"@H_403_6@ |
Decimal@H_403_6@ |
结果:具有可选负号的整数位数。@H_403_6@ 精度说明符:最小位数。@H_403_6@ 默认值精度说明符:所需的最小位数。@H_403_6@ 更多信息:十进制(“D”)格式说明符。@H_403_6@ |
1234 ("D") -> 1234@H_403_6@ -1234 ("D6") -> -001234@H_403_6@ |
“E”或“e”@H_403_6@ |
指数(科学型)@H_403_6@ |
结果:指数记数法。@H_403_6@ 精度说明符:小数位数。@H_403_6@ 默认值精度说明符:6。@H_403_6@ 更多信息:指数(“E”)格式说明符。@H_403_6@ |
1052.0329112756 ("E",en-US) -> 1.052033E+003@H_403_6@ 1052.0329112756 ("e",fr-FR) -> 1,052033e+003@H_403_6@ -1052.0329112756 ("e2",en-US) -> -1.05e+003@H_403_6@ -1052.0329112756 ("E2",fr_FR) -> -1,05E+003@H_403_6@ |
“F”或“f”@H_403_6@ |
定点@H_403_6@ |
结果:整数和小数,负号可选。@H_403_6@ 精度说明符:小数位数。@H_403_6@ 默认值精度说明符:由 System.Globalization.NumberFormatInfo@H_403_6@ 定义。@H_403_6@ 更多信息:定点(“F”)格式说明符。@H_403_6@ |
1234.567 ("F",en-US) -> 1234.57@H_403_6@ 1234.567 ("F",de-DE) -> 1234,57@H_403_6@ 1234 ("F1",en-US) -> 1234.0@H_403_6@ 1234 ("F1",0@H_403_6@ -1234.56 ("F4",en-US) -> -1234.5600@H_403_6@ -1234.56 ("F4",de-DE) -> -1234,5600 @H_403_6@ |
“G”或“g”@H_403_6@ |
常规@H_403_6@ |
结果:最紧凑的定点表示法或科学记数法。 @H_403_6@ 精度说明符:有效位数。@H_403_6@ 默认值精度说明符:取决于数值类型。@H_403_6@ 更多信息:常规(“G”)格式说明符。@H_403_6@ |
-123.456 ("G",en-US) -> -123.456@H_403_6@ 123.456 ("G",sv-SE) -> -123,456@H_403_6@ 123.4546 ("G4",en-US) -> 123.5@H_403_6@ 123.4546 ("G4",sv-SE) -> 123,5@H_403_6@ -1.234567890e-25 ("G",en-US) -> -1.23456789E-25@H_403_6@ -1.234567890e-25 ("G",sv-SE) -> -1,23456789E-25@H_403_6@ |
“N”或“n”@H_403_6@ |
Number@H_403_6@ |
结果:整数和小数、组分隔符和小数分隔符,负号可选。@H_403_6@ 精度说明符:所需的小数位数。@H_403_6@ 默认值精度说明符:由 System.Globalization.NumberFormatInfo@H_403_6@ 定义。@H_403_6@ 更多信息:数字(“N”)格式说明符。@H_403_6@ |
1234.567 ("N",en-US) -> 1,234.57@H_403_6@ 1234.567 ("N",ru-RU) -> 1 234,57 @H_403_6@ 1234 ("N",234.0@H_403_6@ 1234 ("N",0@H_403_6@ -1234.56 ("N",en-US) -> -1,234.560@H_403_6@ -1234.56 ("N",ru-RU) -> -1 234,560@H_403_6@ |
"P" or "p"@H_403_6@ |
百分比@H_403_6@ |
结果:乘以 100 并显示百分比符号的数字。@H_403_6@ 精度说明符:所需的小数位数。@H_403_6@ @H_507_502@默认值精度说明符:由 System.Globalization.NumberFormatInfo@H_403_6@ 定义。@H_403_6@ 更多信息:百分比(“P”)格式说明符。@H_403_6@ |
1 ("P",en-US) -> 100.00 %@H_403_6@ 1 ("P",fr-FR) -> 100,00 %@H_403_6@ -0.39678 ("P1",en-US) -> -39.7 %@H_403_6@ -0.39678 ("P1",fr-FR) -> -39,7 %@H_403_6@ |
“R”或“r”@H_403_6@ |
往返过程@H_403_6@ |
结果:可以往返至相同数字的字符串。@H_403_6@ 受以下类型支持:Single@H_403_6@、Double@H_403_6@ 和 BigInteger@H_403_6@。@H_403_6@ 精度说明符:忽略。@H_403_6@ 更多信息:往返过程(“R”)格式说明符。@H_403_6@ |
123456789.12345678 ("R") -> 123456789.12345678@H_403_6@ -1234567890.12345678 ("R") -> -1234567890.1234567@H_403_6@ |
“X”或“x”@H_403_6@ |
十六进制@H_403_6@ |
结果:十六进制字符串。@H_403_6@ 精度说明符:结果字符串中的位数。@H_403_6@ 更多信息:十六进制(“X”)格式说明符。@H_403_6@ |
255 ("X") -> FF@H_403_6@ -1 ("x") -> ff@H_403_6@ 255 ("x4") -> 00ff@H_403_6@ -1 ("X4") -> 00FF@H_403_6@ |
任何其他单个字符@H_403_6@ |
未知说明符@H_403_6@ |
结果:在运行时引发 FormatException@H_403_6@。@H_403_6@ |
可采用以下两种方式之一使用标准数字格式字符串定义数值的格式:@H_403_6@
-
可以传递给拥有 format@H_403_6@ 参数的 ToString@H_403_6@@H_403_6@ 方法的重载。@H_403_6@ 以下示例在当前(在本例中,为 en-US)区域性中将数值的格式设置为货币字符串。@H_403_6@
-
它作为与 String.Format@H_403_6@、Console.WriteLine@H_403_6@ 和 StringBuilder.AppendFormat@H_403_6@ 等方法一起使用的格式项中的 formatString@H_403_6@ 参数提供。@H_403_6@ 有关更多信息,请参见复合格式@H_403_6@。@H_403_6@ 下面的示例使用格式项在字符串中插入货币值。@H_403_6@
以下各节提供有关每个标准数字格式字符串的详细信息。@H_403_6@
“C”(或货币)格式说明符将数字转换为表示货币金额的字符串。@H_403_6@ 精度说明符指示结果字符串中的所需小数位数。@H_403_6@ 如果省略精度说明符,则默认精度由 NumberFormatInfo.CurrencyDecimalDigits@H_403_6@ 属性定义。@H_403_6@
If the value to be formatted has more than the specified or default number of decimal places,the fractional value is rounded in the result string.@H_403_6@ If the value to the right of the number of specified decimal places is 5 or greater,the last digit in the result string is rounded away from zero.@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制返回字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
CurrencyPositivePattern @H_403_6@ |
定义正值的货币符号的位置。@H_403_6@ |
CurrencyNegativePattern @H_403_6@ |
定义负值的货币符号的位置,并指定负号由括号表示还是由 NegativeSign@H_403_6@ 属性表示。@H_403_6@ |
NegativeSign @H_403_6@ |
如果 CurrencyNegativePattern@H_403_6@ 指示不使用括号,则定义使用负号。 @H_403_6@ |
CurrencySymbol @H_403_6@ |
定义货币符号。@H_403_6@ |
CurrencyDecimalDigits @H_403_6@ |
|
CurrencyDecimalSeparator @H_403_6@ |
定义分隔整数位和小数位的字符串。@H_403_6@ |
CurrencyGroupSeparator @H_403_6@ |
定义分隔整数的组的字符串。 @H_403_6@ |
CurrencyGroupSizes @H_403_6@ |
下面的示例使用货币格式说明符设置 Double@H_403_6@ 值的格式。 @H_403_6@
double@H_403_6@ value = 12345.6789;
Console.WriteLine(value.ToString("C"@H_403_6@,CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3"@H_403_6@,CultureInfo.CreateSpecificCulture("da-DK"@H_403_6@)));
// The example displays the following output on a system whose@H_403_6@
// current culture is English (United States):@H_403_6@
// $12,345.68@H_403_6@
// $12,345.679@H_403_6@
// kr 12.345,679@H_403_6@
“D”(或十进制)格式说明符将数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。@H_403_6@ 只有整型才支持此格式。@H_403_6@
精度说明符指示结果字符串中所需的最少数字个数。@H_403_6@ 如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。@H_403_6@ 如果未指定精度说明符,则默认值为表示不带前导零的整数所需的最小值。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 如下表所示,一个属性会影响结果字符串的格式。@H_403_6@
下面的示例使用十进制格式说明符设置 Int32@H_403_6@ 值的格式。@H_403_6@
int@H_403_6@ value;
value = 12345;
Console.WriteLine(value.ToString("D"@H_403_6@));
// Displays 12345@H_403_6@
Console.WriteLine(value.ToString("D8"@H_403_6@));
// Displays 00012345@H_403_6@
value = -12345;
Console.WriteLine(value.ToString("D"@H_403_6@));
// Displays -12345@H_403_6@
Console.WriteLine(value.ToString("D8"@H_403_6@));
// Displays -00012345@H_403_6@
指数(“E”)格式说明符将数字转换为“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每个“d”表示一个数字 (0-9)。@H_403_6@ 如果该数字为负,则该字符串以减号开头。@H_403_6@ 小数点前总是恰好有一个数字。@H_403_6@
精度说明符指示小数点后所需的位数。@H_403_6@ 如果省略精度说明符,则使用默认值,即小数点后六位数字。@H_403_6@
格式说明符的大小写指示为指数加前缀“E”还是“e”。@H_403_6@ 指数总是由正号或负号以及最少三位数字组成。@H_403_6@ 如果需要,用零填充指数以满足最少三位数字的要求。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制返回字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
NegativeSign @H_403_6@ |
定义表示数字对于系数和指数都为负值的字符串。 @H_403_6@ |
NumberDecimalSeparator @H_403_6@ |
定义在系数中将整数位与小数位分隔的字符串。@H_403_6@ |
PositiveSign @H_403_6@ |
定义指示指数为正值的字符串。@H_403_6@ |
下面的示例使用指数格式说明符设置 Double@H_403_6@ 值的格式。@H_403_6@
double@H_403_6@ value = 12345.6789;
Console.WriteLine(value.ToString("E"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 1.234568E+004@H_403_6@
Console.WriteLine(value.ToString("E10"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004@H_403_6@
Console.WriteLine(value.ToString("e4"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 1.2346e+004@H_403_6@
Console.WriteLine(value.ToString("E"@H_403_6@,CultureInfo.CreateSpecificCulture("fr-FR"@H_403_6@)));
// Displays 1,234568E+004@H_403_6@
定点(“F”)格式说明符将数字转换为“-ddd.ddd…”形式的字符串,其中每个“d”表示一个数字 (0-9)。@H_403_6@ 如果该数字为负,则该字符串以减号开头。@H_403_6@
精度说明符指示所需的小数位数。@H_403_6@ 如果省略精度说明符,则当前 NumberFormatInfo.NumberDecimalDigits@H_403_6@ 属性提供数值精度。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 对象的属性,这些属性控制结果字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
NegativeSign @H_403_6@ |
定义指示数字为负值的字符串。@H_403_6@ |
NumberDecimalSeparator @H_403_6@ |
定义将整数位与小数位分隔的字符串。@H_403_6@ |
NumberDecimalDigits @H_403_6@ |
下面的示例使用定点格式说明符设置 Double@H_403_6@ 和 Int32@H_403_6@ 值的格式。@H_403_6@
int@H_403_6@ integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 17843.00@H_403_6@
integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3"@H_403_6@,CultureInfo.InvariantCulture));
// Displays -29541.000@H_403_6@
double@H_403_6@ doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 18934.19@H_403_6@
Console.WriteLine(doubleNumber.ToString("F0"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 18934@H_403_6@
doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1"@H_403_6@,CultureInfo.InvariantCulture));
// Displays -1898300.2@H_403_6@
Console.WriteLine(doubleNumber.ToString("F3"@H_403_6@,CultureInfo.CreateSpecificCulture("es-ES"@H_403_6@)));
// Displays -1898300,199 @H_403_6@
根据数字类型以及是否存在精度说明符,常规(“G”)格式说明符将数字转换为最紧凑的定点表示法或科学记数法。@H_403_6@ 精度说明符定义可以出现在结果字符串中的最大有效位数。@H_403_6@ 如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。@H_403_6@
数值类型@H_403_6@ |
默认值精度@H_403_6@ |
---|---|
3 位@H_403_6@ |
|
5 位@H_403_6@ |
|
10 位@H_403_6@ |
|
19 位@H_403_6@ |
|
20 位@H_403_6@ |
|
BigInteger @H_403_6@ |
29 位@H_403_6@ |
7 位@H_403_6@ |
|
15 位@H_403_6@ |
|
29 位@H_403_6@ |
如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。@H_403_6@ 结果包含小数点(如果需要),并且忽略小数点后面的尾部零。@H_403_6@ 如果精度说明符存在,并且结果的有效位数超过指定精度,则通过舍入移除多余的尾部数字。@H_403_6@
但是,如果数字是 Decimal@H_403_6@ 并且省略精度说明符,将总是使用定点表示法并保留尾部零。@H_403_6@
使用科学记数法时,如果格式说明符是“G”,则结果的指数带前缀“E”;如果格式说明符是“g”,则结果的指数带前缀“e”。@H_403_6@ 指数最少包含两个数字。@H_403_6@ 这与由指数格式说明符生成的科学记数法的格式不同,后者在指数中最少包括三个数字。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制结果字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
NegativeSign @H_403_6@ |
定义指示数字为负值的字符串。 @H_403_6@ |
NumberDecimalSeparator @H_403_6@ |
定义将整数位与小数位分隔的字符串。@H_403_6@ |
NumberDecimalDigits @H_403_6@ |
|
PositiveSign @H_403_6@ |
定义指示指数为正值的字符串。 @H_403_6@ |
下面的示例使用常规格式说明符设置各种浮点值的格式。@H_403_6@
double@H_403_6@ number;
number = 12345.6789;
Console.WriteLine(number.ToString("G"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 12345.6789@H_403_6@
Console.WriteLine(number.ToString("G"@H_403_6@,CultureInfo.CreateSpecificCulture("fr-FR"@H_403_6@)));
// Displays 12345,6789@H_403_6@
Console.WriteLine(number.ToString("G7"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 12345.68 @H_403_6@
number = .0000023;
Console.WriteLine(number.ToString("G"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 2.3E-06 @H_403_6@
Console.WriteLine(number.ToString("G"@H_403_6@,CultureInfo.CreateSpecificCulture("fr-FR"@H_403_6@)));
// Displays 2,3E-06@H_403_6@
number = .0023;
Console.WriteLine(number.ToString("G"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 0.0023@H_403_6@
number = 1234;
Console.WriteLine(number.ToString("G2"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 1.2E+03@H_403_6@
number = Math.PI;
Console.WriteLine(number.ToString("G5"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 3.1416 @H_403_6@
数字("N")格式说明符将数字转换为"-d,ddd,ddd.ddd…"形式的字符串,其中"-"表示负数符号(如果需要),"d"表示数字 (0-9),","表示组分隔符,"."表示小数点符号。@H_403_6@ 精度说明符指示小数点后所需的位数。@H_403_6@ 如果省略了精度说明符的小数位数被定义的当前 NumberFormatInfo.NumberDecimalDigits@H_403_6@属性。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制结果字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
NegativeSign @H_403_6@ |
定义指示数字为负值的字符串。 @H_403_6@ |
NumberNegativePattern @H_403_6@ |
定义负值的格式,并指定负号由括号表示还是由 NegativeSign@H_403_6@ 属性表示。@H_403_6@ |
NumberGroupSizes @H_403_6@ |
|
NumberGroupSeparator @H_403_6@ |
定义分隔整数的组的字符串。@H_403_6@ |
NumberDecimalSeparator @H_403_6@ |
定义分隔整数位和小数位的字符串。@H_403_6@ |
NumberDecimalDigits @H_403_6@ |
@H_502_1987@下面的示例使用数字格式说明符设置各种浮点值的格式。@H_403_6@
double@H_403_6@ dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N"@H_403_6@,CultureInfo.InvariantCulture));
// Displays -12,445.68@H_403_6@
Console.WriteLine(dblValue.ToString("N1"@H_403_6@,CultureInfo.CreateSpecificCulture("sv-SE"@H_403_6@)));
// Displays -12445,7@H_403_6@
int@H_403_6@ intValue = 123456789;
Console.WriteLine(intValue.ToString("N1"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 123,456,789.0 @H_403_6@
百分比(“P”)格式说明符将数字乘以 100 并将其转换为表示百分比的字符串。@H_403_6@ 精度说明符指示所需的小数位数。@H_403_6@ 如果省略精度说明符,则使用当前 PercentDecimalDigits@H_403_6@ 属性提供的默认数值精度。@H_403_6@
下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制返回字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
PercentPositivePattern @H_403_6@ |
定义正值的百分比符号的位置。@H_403_6@ |
PercentNegativePattern @H_403_6@ |
定义负值的百分比符号和负号的位置。@H_403_6@ |
NegativeSign @H_403_6@ |
定义指示数字为负值的字符串。@H_403_6@ |
PercentSymbol @H_403_6@ |
定义百分比符号。@H_403_6@ |
PercentDecimalDigits @H_403_6@ |
|
PercentDecimalSeparator @H_403_6@ |
定义分隔整数位和小数位的字符串。@H_403_6@ |
PercentGroupSeparator @H_403_6@ |
定义分隔整数的组的字符串。 @H_403_6@ |
PercentGroupSizes @H_403_6@ |
下面的示例使用百分比格式说明符设置浮点值的格式。@H_403_6@
double@H_403_6@ number = .2468013;
Console.WriteLine(number.ToString("P"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 24.68 %@H_403_6@
Console.WriteLine(number.ToString("P"@H_403_6@,CultureInfo.CreateSpecificCulture("hr-HR"@H_403_6@)));
// Displays 24,68% @H_403_6@
Console.WriteLine(number.ToString("P1"@H_403_6@,CultureInfo.InvariantCulture));
// Displays 24.7 %@H_403_6@
往返过程(“R”)格式说明符保证转换为字符串的数值将再次分析回相同的数值。@H_403_6@ 只有 Single@H_403_6@、Double@H_403_6@ 和 BigInteger@H_403_6@ 类型支持此格式。@H_403_6@
如果使用此说明符设置 BigInteger@H_403_6@ 值的格式,其字符串表示形式将包含 BigInteger@H_403_6@ 值中的所有有效位。@H_403_6@ 使用此说明符设置 Single@H_403_6@ 或 Double@H_403_6@ 值的格式时,将首先使用常规格式对其进行测试,如果是 Double@H_403_6@,则采用 15 位精度,如果是 Single@H_403_6@,则采用 7 位精度。@H_403_6@ 如果此值被成功地分析回相同的数值,则使用常规格式说明符来设置其格式。@H_403_6@ 如果未能将此值成功分析回相同的数值,则通过以下方式设置其格式:对 Double@H_403_6@ 使用 17 位精度,对 Single@H_403_6@ 使用 9 位精度。@H_403_6@
尽管可以包括精度说明符,但会忽略它。@H_403_6@ 使用此说明符时,往返过程优先于精度。@H_403_6@
结果字符串受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。@H_403_6@ 下表列出了 NumberFormatInfo@H_403_6@ 属性,这些属性控制结果字符串的格式。@H_403_6@
说明@H_403_6@ |
|
---|---|
NegativeSign @H_403_6@ |
定义指示数字为负值的字符串。 @H_403_6@ |
NumberDecimalSeparator @H_403_6@ |
定义将整数位与小数位分隔的字符串。@H_403_6@ |
PositiveSign @H_403_6@ |
下面的示例使用往返过程格式说明符设置 Double@H_403_6@ 值的格式。@H_403_6@
double@H_403_6@ value;
value = Math.PI;
Console.WriteLine(value.ToString("r"@H_403_6@));
// Displays 3.1415926535897931@H_403_6@
Console.WriteLine(value.ToString("r"@H_403_6@,CultureInfo.CreateSpecificCulture("fr-FR"@H_403_6@)));
// Displays 3,1415926535897931@H_403_6@
value = 1.623e-21;
Console.WriteLine(value.ToString("r"@H_403_6@));
// Displays 1.623E-21@H_403_6@
十六进制(“X”)格式说明符将数字转换为十六进制数的字符串。@H_403_6@ 格式说明符的大小写指示对大于 9 的十六进制数使用大写字符还是小写字符。@H_403_6@ 例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。@H_403_6@ 只有整型才支持此格式。@H_403_6@
精度说明符指示结果字符串中所需的最少数字个数。@H_403_6@ 如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。@H_403_6@
结果字符串不受当前 NumberFormatInfo@H_403_6@ 对象的格式信息的影响。 @H_403_6@
下面的示例使用十六进制数法格式说明符设置 Int32@H_403_6@ 值的格式。@H_403_6@
int@H_403_6@ value;
value = 0x2045e;
Console.WriteLine(value.ToString("x"@H_403_6@));
// Displays 2045e@H_403_6@
Console.WriteLine(value.ToString("X"@H_403_6@));
// Displays 2045E@H_403_6@
Console.WriteLine(value.ToString("X8"@H_403_6@));
// Displays 0002045E@H_403_6@
value = 123456789;
Console.WriteLine(value.ToString("X"@H_403_6@));
// Displays 75BCD15@H_403_6@
Console.WriteLine(value.ToString("X2"@H_403_6@));
// Displays 75BCD15@H_403_6@
控制面板设置
控制面板中“区域和语言选项”@H_403_6@项中的设置会影响由格式化操作产生的结果字符串。@H_403_6@ 这些设置用于初始化与当前线程区域性关联的 NumberFormatInfo@H_403_6@ 对象,当前线程区域性提供用于控制格式设置的值。@H_403_6@ 使用不同设置的计算机将生成不同的结果字符串。@H_403_6@
此外,如果使用 CultureInfo.@H_403_6@CultureInfo(String)@H_403_6@@H_403_6@ 构造函数实例化一个新的 CultureInfo@H_403_6@ 对象以表示与当前的系统区域性相同的区域性,则通过控制面板中的“区域和语言选项”@H_403_6@建立的任何自定义都将应用到新的 CultureInfo@H_403_6@ 对象。@H_403_6@ 可以使用 CultureInfo.@H_403_6@CultureInfo(String,Boolean)@H_403_6@@H_403_6@ 构造函数来创建不会反映系统的自定义项的 CultureInfo@H_403_6@ 对象。@H_403_6@
NumberFormatInfo 属性
格式设置受当前 NumberFormatInfo@H_403_6@ 对象的属性影响,它由当前线程区域性隐式提供或由调用格式设置的方法的 IFormatProvider@H_403_6@ 参数显示提供。@H_403_6@ 为该参数指定 NumberFormatInfo@H_403_6@ 或 CultureInfo@H_403_6@ 对象。@H_403_6@
整型和浮点型数值类型
对标准数字格式说明符的一些说明涉及到整型或浮点型数值类型。@H_403_6@ 整型数值类型包括 Byte@H_403_6@、SByte@H_403_6@、Int16@H_403_6@、Int32@H_403_6@、Int64@H_403_6@、UInt16@H_403_6@、UInt32@H_403_6@、UInt64@H_403_6@ 和 BigInteger@H_403_6@。@H_403_6@ 浮点型数值类型有 Decimal@H_403_6@、Single@H_403_6@ 和 Double@H_403_6@。@H_403_6@
浮点型无穷大和 NaN
无论格式字符串原来是什么值,只要 Single@H_403_6@ 或 Double@H_403_6@ 浮点类型的值为正无穷大、负无穷大或非数值 (NaN),格式字符串就分别是当前适用的 NumberFormatInfo@H_403_6@ 对象指定的 PositiveInfinitySymbol@H_403_6@、NegativeInfinitySymbol@H_403_6@ 或 NaNSymbol@H_403_6@ 属性的值。@H_403_6@
下面的示例使用 en-US 区域性和所有标准数字格式说明符设置一个整型数值和一个浮点型数值的格式。@H_403_6@ 此示例使用两个特定的数值类型(Double@H_403_6@ 和 Int32@H_403_6@),但对于任何一个其他数值基类型(Byte@H_403_6@、SByte@H_403_6@、Int16@H_403_6@、Int32@H_403_6@、Int64@H_403_6@、UInt16@H_403_6@、UInt32@H_403_6@、UInt64@H_403_6@、BigInteger@H_403_6@、Decimal@H_403_6@ 和 Single@H_403_6@)都将产生类似的结果。@H_403_6@
using@H_403_6@ System;
using@H_403_6@ System.Globalization;
using@H_403_6@ System.Threading;
public@H_403_6@ class@H_403_6@ NumericFormats
{
public@H_403_6@ static@H_403_6@ void@H_403_6@ Main()
{
// Display string representations of numbers for en-us culture@H_403_6@
CultureInfo ci = new@H_403_6@ CultureInfo("en-us"@H_403_6@);
// Output floating point values@H_403_6@
double@H_403_6@ floating = 10761.937554;
Console.WriteLine("C: {0}"@H_403_6@,floating.ToString("C"@H_403_6@,ci)); // Displays "C: $10,761.94"@H_403_6@
Console.WriteLine("E: {0}"@H_403_6@,floating.ToString("E03"@H_403_6@,ci)); // Displays "E: 1.076E+004"@H_403_6@
Console.WriteLine("F: {0}"@H_403_6@,floating.ToString("F04"@H_403_6@,ci)); // Displays "F: 10761.9376" @H_403_6@
Console.WriteLine("G: {0}"@H_403_6@,floating.ToString("G"@H_403_6@,ci)); // Displays "G: 10761.937554"@H_403_6@
Console.WriteLine("N: {0}"@H_403_6@,floating.ToString("N03"@H_403_6@,ci)); // Displays "N: 10,761.938"@H_403_6@
Console.WriteLine("P: {0}"@H_403_6@,(floating/10000).ToString("P02"@H_403_6@,ci)); // Displays "P: 107.62 %"@H_403_6@
Console.WriteLine("R: {0}"@H_403_6@,floating.ToString("R"@H_403_6@,ci)); // Displays "R: 10761.937554" @H_403_6@
Console.WriteLine();
// Output integral values@H_403_6@
int@H_403_6@ integral = 8395;
Console.WriteLine("C: {0}"@H_403_6@,integral.ToString("C"@H_403_6@,ci)); // Displays "C: $8,395.00"@H_403_6@
Console.WriteLine("D: {0}"@H_403_6@,integral.ToString("D6"@H_403_6@,ci)); // Displays "D: 008395" @H_403_6@
Console.WriteLine("E: {0}"@H_403_6@,integral.ToString("E03"@H_403_6@,ci)); // Displays "E: 8.395E+003"@H_403_6@
Console.WriteLine("F: {0}"@H_403_6@,integral.ToString("F01"@H_403_6@,ci)); // Displays "F: 8395.0" @H_403_6@
Console.WriteLine("G: {0}"@H_403_6@,integral.ToString("G"@H_403_6@,ci)); // Displays "G: 8395"@H_403_6@
Console.WriteLine("N: {0}"@H_403_6@,integral.ToString("N01"@H_403_6@,ci)); // Displays "N: 8,395.0"@H_403_6@
Console.WriteLine("P: {0}"@H_403_6@,(integral/10000.0).ToString("P02"@H_403_6@,ci)); // Displays "P: 83.95 %"@H_403_6@
Console.WriteLine("X: 0x{0}"@H_403_6@,integral.ToString("X"@H_403_6@,ci)); // Displays "X: 0x20CB"@H_403_6@
Console.WriteLine();
}
}