关于C#中数字字符串格式化的说明

一、标准数字格式字符串:
标准数字格式字符串用于格式化通用数值类型。该数字格式字符串采用Axx的形式,其中A是称为格式说明符的字母型字符,xx是称为精度说明符的可选整数。精度说明符的范围从0到99,并且影响结果中的位数。任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。
所有数字类型的ToString方法的某些重载支持标准数字格式字符串。例如,可将数字格式字符串提供给ToString(String)类型的ToString(String, IFormatProvider)方法和Int32方法。.NET Framework复合格式化功能也支持标准数字格式字符串,该功能由Write和WriteLine类的某些Console和StreamWriter方法、String.Format方法以及StringBuilder.AppendFormat方法使用。
以下列出支持的标准数字格式说明符并显示由每个格式说明符产生的示例输出:

“C”或”c”
名称:Currency。
结果:货币值。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
123.456 (“C”, en-US) -> $123.46
123.456 (“C”, fr-FR) -> 123,46 €
123.456 (“C”, ja-JP) -> ¥123
-123.456 (“C3”, en-US) -> ($123.456)
-123.456 (“C3”, fr-FR) -> -123,456 €
-123.456 (“C3”, ja-JP) -> -¥123.456

“D”或”d”
名称:Decimal。
结果:整型数字,负号可选。
支持类型:仅整型。
精度说明符:最小位数。
默认值精度说明符:所需的最小位数。
示例:
1234 (“D”) -> 1234
-1234 (“D6”) -> -001234

“E”或”e”
名称:指数(科学型)。
结果:指数记数法。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:6。
示例:
1052.0329112756 (“E”, en-US) -> 1.052033E+003
1052.0329112756 (“e”, fr-FR) -> 1,052033e+003
-1052.0329112756 (“e2”, en-US) -> -1.05e+003
-1052.0329112756 (“E2”, fr_FR) -> -1,05E+003

“F”或”f”
名称:定点。
结果:整数和小数,负号可选。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1234.567 (“F”, en-US) -> 1234.57
1234.567 (“F”, de-DE) -> 1234,57
1234 (“F1”, en-US) -> 1234.0
1234 (“F1”, de-DE) -> 1234,0
-1234.56 (“F4”, en-US) -> -1234.5600
-1234.56 (“F4”, de-DE) -> -1234,5600

“G”或”g”
名称:常规。
结果:最紧凑的定点表示法或科学记数法。
支持类型:所有数值类型。
精度说明符:有效位数。
默认值精度说明符:取决于数值类型。
示例:
-123.456 (“G”, en-US) -> -123.456
123.456 (“G”, sv-SE) -> -123,456
123.4546 (“G4”, en-US) -> 123.5
123.4546 (“G4”, sv-SE) -> 123,5
-1.234567890e-25 (“G”, en-US) -> -1.23456789E-25
-1.234567890e-25 (“G”, sv-SE) -> -1,23456789E-25

“N”或”n”
名称:Number。
结果:整数和小数、组分隔符和小数分隔符,负号可选。
支持类型:所有数值类型。
精度说明符:所需的小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1234.567 (“N”, en-US) -> 1,234.57
1234.567 (“N”, ru-RU) -> 1 234,57
1234 (“N”, en-US) -> 1,234.0
1234 (“N”, ru-RU) -> 1 234,0
-1234.56 (“N”, en-US) -> -1,234.560
-1234.56 (“N”, ru-RU) -> -1 234,560

“P”或”p”
名称:百分比。
结果:乘以100并显示百分比符号的数字。
支持类型:所有数值类型。
精度说明符:所需的小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1 (“P”, en-US) -> 100.00 %
1 (“P”, fr-FR) -> 100,00 %
-0.39678 (“P1”, en-US) -> -39.7 %
-0.39678 (“P1”, fr-FR) -> -39,7 %

“R”或”r”
名称:往返过程。
结果:可以往返至相同数字的字符串。
支持类型:Single、Double和BigInteger。
精度说明符:忽略。
示例:
123456789.12345678 (“R”) -> 123456789.12345678
-1234567890.12345678 (“R”) -> -1234567890.1234567

“X”或”x”
名称:十六进制。
结果:十六进制字符串。
支持类型:仅整型。
精度说明符:结果字符串中的位数。
示例:
255 (“X”) -> FF
-1 (“x”) -> ff
255 (“x4”) -> 00ff
-1 (“X4”) -> 00FF

任何其他单个字符
说明:未知说明符,在运行时引发FormatException。

二、自定义数字格式字符串:
自定义数字格式字符串由一个或多个自定义数字说明符组成,用于定义设置数值数据格式的方式。自定义数字格式字符串是任何不属于标准数字格式字符串的格式字符串。
所有数字类型的ToString方法的某些重载支持自定义数字格式字符串。例如,可将数字格式字符串提供给Int32类型的ToString(String)方法和ToString(String, IFormatProvider)方法。.NET Framework复合格式化功能也支持自定义数字格式字符串,该功能由Console和StreamWriter类的某些Write和WriteLine方法、String.Format方法以及StringBuilder.AppendFormat方法使用。
以下列出支持的自定义数字格式说明符并显示由每个格式说明符产生的示例输出:

“0”
说明:零占位符,用对应的数字(如果存在)替换零;否则,将在结果字符串中显示零。
示例:
1234.5678 (“00000”) -> 01235
0.45678 (“0.00”, en-US) -> 0.46
0.45678 (“0.00”, fr-FR) -> 0,46

“#”
说明:数字占位符,用对应的数字(如果存在)替换英镑标记;否则,不会在结果字符串中显示任何数字。
示例:
1234.5678 (“#####”) -> 1235
0.45678 (“#.##”, en-US) -> .46
0.45678 (“#.##”, fr-FR) -> ,46

“.”
说明:小数点,确定小数点分隔符在结果字符串中的位置。
示例:
0.45678 (“0.00”, en-US) -> 0.46
0.45678 (“0.00”, fr-FR) -> 0,46

“,”
说明:组分隔符和数字比例换算,用作组分隔符和数字比例换算说明符。作为组分隔符时,它在各个组之间插入本地化的组分隔符字符。作为数字比例换算说明符,对于每个指定的逗号,它将数字除以1000。
组分隔符说明符示例:
2147483647 (“##,#”, en-US) -> 2,147,483,647
2147483647 (“##,#”, es-ES) -> 2.147.483.647
比例换算说明符示例:
2147483647 (“#,#,,”, en-US) -> 2,147
2147483647 (“#,#,,”, es-ES) -> 2.147

“%”
说明:百分比占位符,将数字乘以100,并在结果字符串中插入本地化的百分比符号。
示例:
0.3697 (“%#0.00”, en-US) -> %36.97
0.3697 (“%#0.00”, el-GR) -> %36,97
0.3697 (“##.0 %”, en-US) -> 37.0 %
0.3697 (“##.0 %”, el-GR) -> 37,0 %

“‰”
说明:千分比占位符,将数字乘以1000,并在结果字符串中插入本地化的千分比符号。
示例:
0.03697 (“#0.00‰”, en-US) -> 36.97‰
0.03697 (“#0.00‰”, ru-RU) -> 36,97‰

“E0″、”E+0″、”E-0″、”e0″、”e+0″、”e-0”
说明:指数表示法,如果后跟至少一个0(零),则使用指数表示法设置结果格式。”E”或”e”指示指数符号在结果字符串中是大写还是小写。跟在”E”或”e”字符后面的零的数目确定指数中的最小位数。加号(+)指示符号字符总是置于指数前面。减号(-)指示符号字符仅置于负指数前面。
示例:
987654 (“#0.0e0”) -> 98.8e4
1503.92311 (“0.0##e+00”) -> 1.504e+03
1.8901385E-16 (“0.0e+00”) -> 1.9e-16

“\”
说明:转义符,使下一个字符被解释为文本而不是自定义格式说明符。
示例:
987654 (“\###00\#”) -> #987654#

“;”
说明:部分分隔符,通过分隔格式字符串定义正数、负数和零各部分。
示例:
12.345 (“#0.0#;(#0.0#);-\0-“) -> 12.35
0 (“#0.0#;(#0.0#);-\0-“) -> -0-
-12.345 (“#0.0#;(#0.0#);-\0-“) -> (12.35)
12.345 (“#0.0#;(#0.0#)”) -> 12.35
0 (“#0.0#;(#0.0#)”) -> 0.0
-12.345 (“#0.0#;(#0.0#)”) -> (12.35)

‘字符’或”字符串”
说明:文本字符串分隔符,指示应复制到未更改的结果字符串的封闭字符。
示例:
68 (“# ‘ degrees'”) -> 68 degrees
68 (“# ‘ degrees'”) -> 68 degrees

所有其他字符
说明:字符将复制到未更改的结果字符串。
示例:
68 (“# °”) -> 68 °

更多信息请参阅:标准数字格式字符串自定义数字格式字符串

发表评论