Previous topicNext topic
Help > 开发指南 > 编程基础 > 格式化 >
数字自定义格式化

 

格式化文本

类型说明

示例

输出结果 (传入值Double 1500.42)

说明

0

零占位符:

{0:00.0000}

1500.4200

如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到结果字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。 “00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。

#

数字占位符:

{0:(#).##}

(1500).42

 如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。

请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 “##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。

.

小数点

{0:0.0}

1500.4

 格式字符串中的第一个“.”字符确定格式化的值中的小数点分隔符的位置;任何其他“.”字符被忽略。

,

千位分隔符

{0:0,0}

1,500

,”字符可作为千位分隔符说明符和数字比例换算说明符。

千位分隔符说明符:如果在两个数字占位符( 0 #)之间指定一个或多个“ ,”字符用于设置数字整数位的格式,则在输出的整数部分中每个数字组之间插入一个组分隔符字符。  

当前 NumberFormatInfo 对象的 NumberGroupSeparator NumberGroupSizes 属性将确定用作数字组分隔符的字符以及每个数字组的大小。例如,如果使用字符串“#,#”和固定区域性对数字 1000 进行格式化,则输出为“1,000”。

数字比例换算说明符:如果在紧邻显式或隐式小数点的左侧指定一个或多个“,”字符,则每出现一个数字比例换算说明符便将要格式化的数字除以 1000。例如,如果使用字符串“0,,”对数字 1000000000 进行格式化,则输出为“100”。 

可以在同一格式字符串中使用千位分隔符说明符和数字比例换算说明符。例如,如果使用字符串“#,0,,”和固定区域性对数字 10000000000 进行格式化,则输出为“1,000”。

,.

Number scaling

{0:0,.}

2

Comma adjacent to Period scales by 1000.

%

百分号

{0:0%}

150042%

在格式字符串中出现“%”字符将导致数字在格式化之前乘以 100。适当的符号插入到数字本身在格式字符串中出现“%”的位置。使用的百分比字符由当前的 NumberFormatInfo 类确定。

e

科学计数符号

{0:00e+0}

15e+2

如果“E”、“E+”、“E-”、“e”、“e+”或“e-”中的任何一个字符串出现在格式字符串中,而且后面紧跟至少一个“0”字符,则数字用科学记数法来格式化,在数字和指数之间插入“E”或“e”。跟在科学记数法指示符后面的“0”字符数确定指数输出的最小位数。“E+”和“e+”格式指示符号字符(正号或负号)应总是置于指数前面。“E”、“E-”、“e”或“e-”格式指示符号字符仅置于负指数前面。

;

分组分隔符

see below

;”字符用于分隔格式字符串中的正数、负数和零部分。

\

转义符

C# C++ 中,反斜杠字符使格式字符串中的下一个字符被解释为转义序列。它与传统的格式化序列一起使用,如“\n”(换行)。

在某些语言中,转义符本身用作文本时必须跟在转义符之后。否则,编译器将该字符理解为转义符。使用字符串“\\”显示“\”。

请注意,Visual Basic 中不支持此转义符,但是 ControlChars 提供相同的功能。

“ABC”

字符串

引在单引号或双引号中的字符被复制到结果字符串中,而且不影响格式化。

对于需要将负值括在括号中的货币值的格式,组分隔符特别有用。本文档底部的货币格式示例很明显:

分组分隔符示例:

 Vb.Net
Dim MyPos As Double = 19.95
Dim MyNeg As Double = -19.95
Dim MyZero As Double = 0
Dim MyString As String = MyPos.ToString("$#,##0.00;($#,##0.00);Zero")
Proj.MsgDebug.Add(MyString)  '返回结果:$19.95
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero")
Proj.MsgDebug.Add(MyString)  '返回结果:($19.95)
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero")
Proj.MsgDebug.Add(MyString)  '返回结果:Zero
'如果想让0显示为空
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);''")
Proj.MsgDebug.Add(MyString)  '返回结果:

 C#
double MyPos = 19.95;
double MyNeg = -19.95;
double MyZero = 0;
string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");
Proj.MsgDebug.Add(MyString);  // 返回结果:$19.95
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");
Proj.MsgDebug.Add(MyString);  // 返回结果:($19.95)
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");
Proj.MsgDebug.Add(MyString);  // 返回结果:Zero
// 如果想让0显示为空
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);''");
Proj.MsgDebug.Add(MyString);  // 返回结果:

小技巧:String.Format可以轻松实现空格占位符。

 Vb.Net
Dim decNums As Decimal=1454.2561
'格式化成20个字符,原字符左对齐,不足则补空格
Proj.MsgDebug.Add(String.Format("{0,-20}",decNums)+":这里是结尾") '返回结果:1454.2561           :这里是结尾
'格式化成20个字符,原字符右对齐,不足则补空格
Proj.MsgDebug.Add(String.Format("{0,20}",decNums)+":这里是结尾")  '返回结果:           1454.2561:这里是结尾
Dim strMsg As String="我是测试文本"
'格式化成20个字符,原字符左对齐,不足则补空格
Proj.MsgDebug.Add(String.Format("{0,-20}",strMsg)+":这里是结尾") '返回结果:我是测试文本              :这里是结尾
'格式化成20个字符,原字符右对齐,不足则补空格
Proj.MsgDebug.Add(String.Format("{0,20}",strMsg)+":这里是结尾")  '返回结果:             我是测试文本:这里是结尾

 C#
decimal decNums = 1454.2561M;
// 格式化成20个字符,原字符左对齐,不足则补空格
Proj.MsgDebug.Add(string.Format("{0,-20}", decNums) + ":这里是结尾"); // 返回结果:1454.2561           :这里是结尾
// 格式化成20个字符,原字符右对齐,不足则补空格
Proj.MsgDebug.Add(string.Format("{0,20}", decNums) + ":这里是结尾");  // 返回结果:           1454.2561:这里是结尾
string strMsg = "我是测试文本";
// 格式化成20个字符,原字符左对齐,不足则补空格
Proj.MsgDebug.Add(string.Format("{0,-20}", strMsg) + ":这里是结尾"); // 返回结果:我是测试文本              :这里是结尾
// 格式化成20个字符,原字符右对齐,不足则补空格
Proj.MsgDebug.Add(string.Format("{0,20}", strMsg) + ":这里是结尾");  // 返回结果:             我是测试文本:这里是结尾