需要控制数字的显示格式,超过千位自动添加逗号什么的。查了一下,跟gridview里面的有点像,只不过这次是用string.fomat
就下面这篇文章的举例就很容易懂啦~
http://blog.youkuaiyun.com/jinjiangdongfang/archive/2010/05/27/5628766.aspx
int a = 12345678;
//格式为sring输出
Label1.Text = string.Format("asdfadsf{0}adsfasdf",a);
Label2.Text = "asdfadsf"+a.ToString()+"adsfasdf";
Label1.Text = string.Format("asdfadsf{0:C}adsfasdf",a);//asdfadsf¥1,234.00adsfasdf
Label2.Text = "asdfadsf"+a.ToString("C")+"adsfasdf";//asdfadsf¥1,234.00adsfasdf
double b = 1234.12543;
int a = 12345678;
//格式为特殊的string样式输出
Label1.Text = string.Format("asdfadsf{0:C}adsfasdf",b);//asdfadsf¥1,234.13adsfasdf
Label2.Text = "asdfadsf"+b.ToString("C")+"adsfasdf";//asdfadsf¥1,234.13adsfasdf
Label1.Text = string.Format("{0:C3}",b);//¥1,234.125
Label2.Text = b.ToString("C3");//¥1,234.125
Label1.Text = string.Format("{0:d}",a);//十进制--12345678
Label2.Text = b.ToString("d");//十进制--相同的类型,转换报错
Label1.Text = string.Format("{0:e}",a);//指数--1.234568e+007
Label2.Text = b.ToString("e");//指数--1.234125e+003
Label1.Text = string.Format("{0:f}",a);//定点数--12345678.00
Label2.Text = b.ToString("f");//定点数--1234.13
Label1.Text = string.Format("{0:n}",a);//数值--12,345,678.00
Label2.Text = b.ToString("n");//数值--1,234.13
Label1.Text = string.Format("{0:x}",a);//十六进制--bc614e
Label2.Text = b.ToString("x");//16--带有小数不能转换,出错
Label1.Text = string.Format("{0:g}",a);//通用为最紧凑--12345678
Label2.Text = b.ToString("g");//通用为最紧凑--1234.12543
Label1.Text = string.Format("{0:r}",a);//转来转去不损失精度--整数不允许用,报错
Label2.Text = b.ToString("r");//转来转去不损失精度--1234.12543
double b = 4321.12543;
int a = 1234;
自定义模式输出:
//"0"描述:占位符,如果可能,填充位
Label1.Text = string.Format("{0:000000}",a);// 001234
Label2.Text = string.Format("{0:000000}",b);// 004321
//"#"描述:占位符,如果可能,填充位
Label1.Text = string.Format("{0:#######}",a);// 1234
Label2.Text = string.Format("{0:#######}",b);// 4321
Label1.Text = string.Format("{0:#0####}",a);// 01234
Label2.Text = string.Format("{0:0#0000}",b);// 004321
//"."描述:小数点
Label1.Text = string.Format("{0:000.000}",a);//1234.000
Label2.Text = string.Format("{0:000.000}",b);//4321.125
double b = 87654321.12543;
int a = 12345678;
//","描述:数字分组,也用于增倍器
Label1.Text = string.Format("{0:0,00}",a);// 12,345,678
Label2.Text = string.Format("{0:0,00}",b);// 87,654,32
Label1.Text = string.Format("{0:0,}",a);// 12346
Label2.Text = string.Format("{0:0,}",b);// 87654
Label1.Text = string.Format("{0:0,,}",a);// 12
Label2.Text = string.Format("{0:0,,}",b);// 88
Label1.Text = string.Format("{0:0,,,}",a);// 0
Label2.Text = string.Format("{0:0,,,}",b);// 0
//"%"描述:格式为百分数
Label1.Text = string.Format("{0:0%}",a);// 1234567800%
Label2.Text = string.Format("{0:#%}",b);// 8765432113%
Label1.Text = string.Format("{0:0.00%}",a);// 1234567800.00%
Label2.Text = string.Format("{0:#.00%}",b);// 8765432112.54%
//"abc"描述:显示单引号内的文本
Label1.Text = string.Format("{0:'文本'0}",a);// 文本12345678
Label2.Text = string.Format("{0:文本0}",b);// 文本87654321
//"\"描述:后跟1要打印字的字符,也用于转移符\n等
Label1.Text = string.Format("\"你好!\"");// "你好!"
Label2.Text = string.Format("[url=file://\\c\\books\\new\\we.asp]\\c\\books\\new\\we.asp");//\c\books\new\we.asp
//"@"描述:后跟要打印字的字符,
Label1.Text = string.Format(@"""你好!"""); // "你好!"要打印"则需要输入两对才可以
Label2.Text = string.Format(@"\c\books\new\we.asp");//\c\books\new\we.asp
1. 使用 ToString 进行转换
主要是将一种类型的数据 转换成相应的格式 ,
如 数字格式化 ((int )200).ToString("f2") ==》200.00 表示将数字200 保留2位小数。 写法可能有些出入,此处只代表大概的意思。
2.使用convert 转换
此种方法 主要是进行数据不同类型之间的转换
如 Convert.ToDateTime("2009-01-01") 返回的是个DateTime类型的数据变量
3.使用 string.format 方法
如 string.format("{0} is a string format like {1}","0 position","{1} position") ,其中 第一个 字段里面的 {0},{1}是占位符号, 具体由第2,第3个字符串提供。
这个方法的好处是在处理复杂的string类型生成,以及含有特殊字符时的处理
以下是一些具体的例子,温故知新:
C 货币2.5.ToString("C")
¥2.50
D
十进制数
25.ToString("D5")
00025
E
科学型
25000.ToString("E")
2.500000E+005
F
固定点
25.ToString("F2")
25.00
G
常规
2.5.ToString("G")
2.5
N
数字
2500000.ToString("N")
2,500,000.00
X
十六进制
255.ToString("X")
FF
常用格式举例:
(1) int i=12345;
this.textBox1.Text=i.ToString();
//结果 12345(this指当前对象,或叫当前类的实例)
this.textBox2.Text=i.ToString("d8");
//结果 00012345
(2) int i=123;
double j=123.45;
string s1=string.Format("the value is {0,7:d}",i);
string s2=string.Format("the value is {0,7:f3}",j);
this.textBox1.Text=s1 ;
//结果 the value is 123
this.textBox2.Text=s2;
//结果 the value is 123.450
(3)double i=12345.6789;
this.textBox1.Text=i.ToString("f2"); //结果 12345.68
this.textBox2.Text=i.ToString("f6");
//结果 12345.678900
(4)double i=12345.6789;
this.textBox1.Text=i.ToString("n"); //结果 12,345.68
this.textBox2.Text=i.ToString(“n4”); //结果 12,345.6789
(5)double i=0.126;
string s=string.Format("the value is {0:p}",i);
this.textBox1.Text=i.ToString("p"); //结果 12.6%
this.textBox2.Text=s; //结果 the value is 12.6%
(6) DateTime dt =new DateTime(2003,5,25);
this.textBox1.Text=dt.ToString("yy.M.d");
//结果 03.5.25
this.textBox2.Text=dt.ToString(“yyyy年M月”);
//结果 2003年5月
Convert.ToDateTime("2005/12/22 22:22:22").ToString("yyyy/MM/dd HH:mm:ss")
"2005/12/22 22:22:22"
(7) int i=123;
double j=123.45;
string s=string.Format("i:{0,-7},j:{1,7}",i,j);
//-7表示左对齐,占7位
this.textBox1.Text=s ;
//结果i:123 ,j: 123.45
格式規範 | 名稱 | 說明 |
C 或 c | 貨幣 | 數值將轉換為表示貨幣數量的字串。轉換是由用來對數值進行格式化的 NumberFormatInfo 物件的貨幣格式資訊所控制。精確度規範指示所需要的小數位數。如果省略精確度規範,則會使用 NumberFormatInfo 指定的預設貨幣精確度。 |
D 或 d | 十進位 | 這個格式只支援整數型別。數值將會被轉換為十進位數 (0-9) 的字串,如果數值為負數,則在前面加上負號。精確度規範指示產生的字串中所需要的最少位數。如果有必要,數值以零填補其左邊,產生精確度規範所指定的位數。 |
E 或 e | 科學 (指數的) | 數字會轉換為 "-d.ddd…E+ddd" 或 "-d.ddd…e+ddd" 型式的字串,其中 "d" 表示數字 (0-9)。字串以負號開始,如果數值為負數的話。在小數點前面永遠會有一個位數。精確度規範指示小數點之後需要的位數。如果省略精確度規範,則使用小數點之後有六位數的預設值。格式規範的大小寫指示是否在指數之前加上 'E' 或 'e'。指數永遠由正號或負號和最少三位數所組成。必要時,指數將以零填補來符合指定的最少位數。 |
F 或 f | 固定點 | 數字會轉換為 "-ddd.ddd..." 型式的字串,其中 "d" 表示數字 (0-9)。字串以負號開始,如果數值為負數的話。精確度規範指示所需要的小數位數。如果省略精確度規範,則使用 NumberFormatInfo 指定的預設數值精確度。 |
G 或 g | 一般 | 數字會轉換為固定點或科學標記法中最精簡的一個,端視數字的型別和精確度規範是否存在而定。如果精確度規範已省略或為零,數字的型別將決定預設的精確度,如下列清單所顯示的。 Byte 或 SByte:3 Int16 或 UInt16:5 Int32 或 UInt32:10 Int64 或 UInt64:19 Single:7 Double:15 Decimal:29 如果以科學標記法來表示數字所產生的指數大於 -5 而且小於精確度規範,則會使用固定點標記法,否則使用科學標記法。必要時,結果會包含小數點並省略字串後端的零。如果精確度規範存在而且結果中的有效位數超過指定的精確度,那麼超出的後端位數會藉由四捨五入來移除。要是使用科學標記法,如果格式規範為 'G',結果中的指數前面會加上 'E';如果格式規範為 'g',則加上 'e'。 前面規則的例外是如果數字為 Decimal 而精確度規範已省略的情形。在該情形下,永遠使用固定點標記法並且保留後端的零。 |
N 或 n | 數字 | 數字會轉換為 "-d,ddd,ddd.ddd..." 型式的字串,其中 "d" 表示數字 (0-9)。字串以負號開始,如果數值為負數的話。千位分隔符號在小數點左邊插入每三位數一組的各個群組之間。精確度規範指示所需要的小數位數。如果省略精確度規範,則使用 NumberFormatInfo 指定的預設數值精確度。 |
P 或 p | 百分比 | 數值將轉換為 NumberFormatInfo.PercentNegativePattern 屬性或 NumberFormatInfo.PercentPositivePattern 屬性所定義的百分比字串。如果數值為負數,產生的字串由 PercentNegativePattern 來定義,並以負號開始。轉換的數值要乘以 100,以便呈現為百分比。精確度規範指示所需要的小數位數。如果省略精確度規範,則使用 NumberFormatInfo 指定的預設數值精確度。 |
R 或 r | 來回 | 來回規範保證轉換為字串的數值將會被剖析還原成相同數值。當數值使用這個規範來格式化時,它首先使用一般格式 (具有 15 位精確度的 Double 和 7 位精確度的 Single) 來測試。如果該值成功地剖析回到相同數值,即會使用一般格式規範來格式化。然而,如果這個值無法成功地剖析回到相同數值,就會使用 17 位數精確度的 Double 和 9 位數精確度的 Single 來格式化這個值。雖然精確度規範可以附加到來回格式規範,但它會被忽略。使用來回規範時,這個規範優先於精確度規範。這個格式只支援浮點型別。 |
X 或 x | 十六進位 | 數值將轉換為十六進位數字的字串。格式規範的大小寫指示是否要使用大寫或小寫字元於大於 9 的十六進位數字。例如,使用 'X' 產生 "ABCDEF",而 'x' 產生 "abcdef"。精確度規範指示產生的字串中所需要的最少位數。 |