轉自:http://www.cnblogs.com/bignjl/archive/2011/01/14/1935645.html
c# ToString() 格式化字串 格式化數值:有時,我們可能需要將數值以一定的格式來呈現,就需要對數值進行格式化。我們使用格式字串指定格式。格式字串採用以下形式:Axx,其中 A 為格式說明符,指定格式化類型,xx 為有效位數規範,控制格式化輸出的有效位元或小數位元。
格式說明符 說明 樣本 輸出
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
C#的String.Format格式化舉例
stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0
stringstr2 =string.Format("{0:N2}",56789); //result: 56,789.00
stringstr3 =string.Format("{0:N3}",56789); //result: 56,789.000
stringstr8 =string.Format("{0:F1}",56789); //result: 56789.0
stringstr9 =string.Format("{0:F2}",56789); //result: 56789.00
stringstr11 =(56789 / 100.0).ToString("#.##"); //result: 567.89
stringstr12 =(56789 / 100).ToString("#.##"); //result: 567
C 或 c
貨幣
Console.Write("{0:C}", 2.5); //$2.50
Console.Write("{0:C}", -2.5); //($2.50)
D 或 d
十進位數
Console.Write("{0:D5}", 25); //00025
E 或 e
科學型
Console.Write("{0:E}", 250000); //2.500000E+005
F 或 f
固定點
Console.Write("{0:F2}", 25); //25.00
Console.Write("{0:F0}", 25); //25
G 或 g
常規
Console.Write("{0:G}", 2.5); //2.5
N 或 n
數字
Console.Write("{0:N}", 2500000); //2,500,000.00
X 或 x
十六進位
Console.Write("{0:X}", 250); //FA
Console.Write("{0:X}", 0xffff); //FFFF
C# 數字格式化字串詳解2010-07-03 08:59 A.M.標準數字格式字串用于格式化通用數實值型別。標準數字格式字串採用 Axx 的形式,其中 A 是稱為格式說明符的字母型字元,xx 是稱為有效位數規範的可選整數。有效位數規範的範圍從 0 到 99,並且影響結果中的位元。任何包含一個以上字母字元(包括空白)的數字格式字串都被解釋為自訂數字格式字串。
發現網上只要你去百度Google搜,文章都是千篇一律,互相摘抄,抄襲。其中還有一些錯誤,所以這些代碼,以及我其他文章的代碼都是運行之後驗證的。
using System;
namespace ToStringFormat
{
class Program
{
static void Main(string[] args)
{
//按照中國人習慣標準轉化
System.Globalization.CultureInfo Culinfo = System.Globalization.CultureInfo.CreateSpecificCulture("zh-Cn");
//【C或c】,數字轉換為表示貨幣金額的字串。轉換由當前 NumberFormatInfo 對象的貨幣格式資訊控制。
//有效位數規範指示所需的小數位元。如果省略有效位數規範,則使用當前 NumberFormatInfo 對象給定的預設貨幣精度。
Console.WriteLine("(2.5).ToString('C'):" + (2.5).ToString("C", Culinfo)); //¥2.5
Console.WriteLine("(2.5).ToString('C2'):" + (2.5).ToString("C2", Culinfo)); //¥2.50
Console.WriteLine("(2.5).ToString('C3'):" + (2.5).ToString("C3", Culinfo)); //¥2.500
Console.WriteLine("*************************************************************");
//【D 或 d】,只有整型才支援此格式。數字轉換為十進位數字 (0-9) 的字串,如果數字為負,則前面加負號。
//有效位數規範指示結果字串中所需的最少數字個數。如果需要的話,則用零填充該數位左側,以產生有效位數規範給定的數字個數。
Console.WriteLine("(25).ToString('D'):" + (25).ToString("D", Culinfo)); //25
Console.WriteLine("(25).ToString('D3'):" + (25).ToString("D3", Culinfo)); //025
Console.WriteLine("(25).ToString('D4'):" + (25).ToString("D4", Culinfo)); //0025
Console.WriteLine("(25).ToString('D5'):" + (25).ToString("D5", Culinfo)); //00025
Console.WriteLine("*************************************************************");
//【E 或 e】,數字轉換為“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字串,其中每個“d”表示一個數字 (0-9)。如果該數字為負,則該字串以減號開頭。小數點前總有一個數字。有效位數規範指示小數點後所需的位元。如果省略有效位數規範,則使用預設值,即小數點後六位元字。
//格式說明符的大小寫指示在指數前加首碼“E”還是“e”。指數總是由正號或負號以及最少三位元字組成。如果需要,用零填充指數以滿足最少三位元字的要求。
Console.WriteLine("(25000).ToString('E'):" + (25000).ToString("E", Culinfo)); //2.500000E+004
Console.WriteLine("(25000).ToString('E2'):" + (25000).ToString("E2", Culinfo)); //2.50E+004
Console.WriteLine("(25000).ToString('E3'):" + (25000).ToString("E3", Culinfo)); //2.500E+004
Console.WriteLine("(25000).ToString('e'):" + (25000).ToString("e", Culinfo)); //2.500000e+004
Console.WriteLine("(25000).ToString('e2'):" + (25000).ToString("e2", Culinfo)); //2.50e+004
Console.WriteLine("(25000).ToString('e3'):" + (25000).ToString("e3", Culinfo)); //2.500e+004
Console.WriteLine("*************************************************************");
//【F 或 f】,數字轉換為“-ddd.ddd…”形式的字串,其中每個“d”表示一個數字 (0-9)。如果該數字為負,則該字串以減號開頭。
//有效位數規範指示所需的小數位元。如果忽略有效位數規範,則預設數值精度由當前 NumberFormatInfo 對象的 NumberDecimalDigits 屬性給定。
Console.WriteLine("(25).ToString('F0'):" + (25).ToString("F0", Culinfo)); //25
Console.WriteLine("(25).ToString('F1'):" + (25).ToString("F1", Culinfo)); //25.0
Console.WriteLine("(25).ToString('F2'):" + (25).ToString("F2", Culinfo)); //25.00
Console.WriteLine("*************************************************************");
//【G 或 g】,根據數字類型以及是否存在有效位數規範,數字會轉換為定點或科學記號標記法的最緊湊形式。如果有效位數規範被省略或為零,則數位類型決定預設精度,如下表所示。
//Byte 或 SByte:3
//Int16 或 UInt16:5
//Int32 或 UInt32:10
//Int64 或 UInt64:19
//Single:7
//Double:15
//Decimal:29
//如果用科學記號標記法表示數字時指數大於 -5 而且小於有效位數規範,則使用定點標記法;否則使用科學記號標記法。如果要求有小數點,並且忽略尾部零,則結果包含小數點。如果有效位數規範存在,並且結果的有效數字位元超過指定精度,則通過舍入刪除多餘的尾部數字。
//如果數字是 Decimal 並且省略有效位數規範,上述規則存在一個例外。在這種情況下總使用定點標記法並保留尾部零。
//使用科學記號標記法時,如果格式說明符是“G”,結果的指數帶首碼“E”;如果格式說明符是“g”,結果的指數帶首碼“e”。
Console.WriteLine("(2.5).ToString('G'):" + (250).ToString("G", Culinfo)); //250
Console.WriteLine("(2.5).ToString('G1'):" + (250).ToString("G1", Culinfo)); //3E+02
Console.WriteLine("(2.5).ToString('G2'):" + (250).ToString("G2", Culinfo)); //2.5E+02
Console.WriteLine("(2.5).ToString('G3'):" + (250).ToString("G3", Culinfo)); //250
Console.WriteLine("*************************************************************");
//【N 或 n】,數字轉換為“-d,ddd,ddd.ddd…”形式的字串,其中“-”表示負數符號(如果需要),“d”表示數字 (0-9),“,”表示數字組之間的千位分隔字元,“.”表示小數點符號。實際的負數模式、數字組大小、千位分隔字元以及小數分隔字元分別由當前 NumberFormatInfo 對象的 NumberNegativePattern、NumberGroupSizes、NumberGroupSeparator 和 NumberDecimalSeparator 屬性指定。
//有效位數規範指示所需的小數位元。如果忽略有效位數規範,則預設數值精度由當前 NumberFormatInfo 對象的 NumberDecimalDigits 屬性給定。
Console.WriteLine("(250000).ToString('N'):" + (250000).ToString("N", Culinfo)); //250,000.00
Console.WriteLine("(250000).ToString('N1'):" + (250000).ToString("N1", Culinfo)); //250,000.0
Console.WriteLine("(250000).ToString('N3'):" + (250000).ToString("N3", Culinfo)); //250,000.000
Console.WriteLine("*************************************************************");
//【X 或 x】只有整型才支援此格式。數字轉換為十六進位數位字串。格式說明符的大小寫指示對大於 9 的十六進位數字使用大寫字元還是小寫字元。例如,使用“X”產生“ABCDEF”,使用“x”產生“abcdef”。
//有效位數規範指示結果字串中所需的最少數字個數。如果需要的話,則用零填充該數位左側,以產生有效位數規範給定的數字個數。
Console.WriteLine("(25).ToString('X'):" + (25).ToString("X", Culinfo));//19
Console.WriteLine("(25).ToString('X4'):" + (25).ToString("X4", Culinfo));//19
Console.WriteLine("(25).ToString('X8'):" + (25).ToString("X8", Culinfo));//19
Console.WriteLine("*************************************************************");
//【P 或 p】 按照 NumberFormatInfo..::.PercentNegativePattern 屬性(若數字為負)或 NumberFormatInfo..::.PercentPositivePattern 屬性(若數字為正)的定義,將數字轉換為一個表示百分比的字串。已轉換的數字乘以 100 以表示為百分比。
//有效位數規範指示所需的小數位元。如果省略有效位數規範,則使用當前 NumberFormatInfo 對象給定的預設數字精度。
Console.WriteLine("(0.025).ToString('P'):" + (0.025).ToString("P", Culinfo));//2.50%
Console.WriteLine("(0.025).ToString('P1'):" + (0.025).ToString("P1", Culinfo));//2.5%
Console.WriteLine("(0.025).ToString('P2'):" + (0.025).ToString("P2", Culinfo));//2.50%
Console.WriteLine("(0.025).ToString('P3'):" + (0.025).ToString("P3", Culinfo));//2.500%
Console.WriteLine("*************************************************************");
//【R 或 r】只有 Single 和 Double 類型支援此格式。往返過程說明符保證轉換為字串的數值再次被分析為相同的數值。使用此說明符格式化數值時,首先使用常規格式對其進行測試:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的數值,則使用常規格式說明符對其進行格式化。但是,如果此值未被成功地分析為相同數值,則它這樣格式化:Double 使用 17 位精度,Single 使用 9 位精度。
//儘管可以存在有效位數規範,但它將被忽略。使用此說明符時,往返過程優先於精度。
Console.WriteLine("(25.00).ToString('r'):" + (25.00).ToString("r", Culinfo)); //25
Console.WriteLine("(25.00).ToString('r1'):" + (25.00).ToString("r1", Culinfo)); //25
Console.WriteLine("(25.00).ToString('r2'):" + (25.00).ToString("r2", Culinfo)); //25
Console.ReadKey();
}
}
}
時間進行格式化
DateTime dt = DateTime.Now; String date; date = dt.ToString(“d“,DateTimeFormatInfo.InvariantInfo); Response.Write(date + “﹤/br﹥“);//07/22/2009 date = dt.ToString(“G“, DateTimeFormatInfo.InvariantInfo); Response.Write(date + “﹤/br﹥“);//07/22/2009 14:54:37
date = dt.ToString(“r“, DateTimeFormatInfo.InvariantInfo); Response.Write(date + “﹤/br﹥“);//Wed, 22 Jul 2009 14:54:37 GMT date = dt.ToString(“T“, DateTimeFormatInfo.InvariantInfo); Response.Write(date + “﹤/br﹥“);//14:54:37 date = dt.ToString(“u“, DateTimeFormatInfo.InvariantInfo);
Response.Write(date + “﹤/br﹥“);//2009-07-22 14:54:37Z date = dt.ToString(“dd-MM-yyyy“, DateTimeFormatInfo.InvariantInfo); Response.Write(date + “﹤/br﹥“);//22-07-2009