c#格式化數(shù)字的方法
本文實(shí)例分析了c#格式化數(shù)字的方法。分享給大家供大家參考。具體如下:
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);//十進(jìn)制--12345678 Label2.Text = b.ToString("d");//十進(jìn)制--相同的類(lèi)型,轉(zhuǎn)換報(bào)錯(cuò) Label1.Text = string.Format("{0:e}",a);//指數(shù)--1.234568e+007 Label2.Text = b.ToString("e");//指數(shù)--1.234125e+003 Label1.Text = string.Format("{0:f}",a);//定點(diǎn)數(shù)--12345678.00 Label2.Text = b.ToString("f");//定點(diǎn)數(shù)--1234.13 Label1.Text = string.Format("{0:n}",a);//數(shù)值--12,345,678.00 Label2.Text = b.ToString("n");//數(shù)值--1,234.13 Label1.Text = string.Format("{0:x}",a);//十六進(jìn)制--bc614e Label2.Text = b.ToString("x");//16--帶有小數(shù)不能轉(zhuǎn)換,出錯(cuò) Label1.Text = string.Format("{0:g}",a);//通用為最緊湊--12345678 Label2.Text = b.ToString("g");//通用為最緊湊--1234.12543 Label1.Text = string.Format("{0:r}",a);//轉(zhuǎn)來(lái)轉(zhuǎn)去不損失精度--整數(shù)不允許用,報(bào)錯(cuò) Label2.Text = b.ToString("r");//轉(zhuǎn)來(lái)轉(zhuǎn)去不損失精度--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 //"."描述:小數(shù)點(diǎn) 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; //","描述:數(shù)字分組,也用于增倍器 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 //"%"描述:格式為百分?jǐn)?shù) 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"描述:顯示單引號(hào)內(nèi)的文本 Label1.Text = string.Format("{0:'文本'0}",a);// 文本12345678 Label2.Text = string.Format("{0:文本0}",b);// 文本87654321 //"""描述:后跟1要打印字的字符,也用于轉(zhuǎn)移符"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(@"""你好!"""); // "你好!"要打印"則需要輸入兩對(duì)才可以 Label2.Text = string.Format(@""c"books"new"we.asp");//"c"books"new"we.asp Label1.Text = String.Format("{0:yyyy年-mm月-dd日",DateTime.Now);
日期轉(zhuǎn)化:
為了達(dá)到不同的顯示效果有時(shí),我們需要對(duì)時(shí)間進(jìn)行轉(zhuǎn)化,默認(rèn)格式為:2007-01-03 14:33:34 ,要轉(zhuǎn)化為其他格式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示:
using System; using System.Globalization; String format="D"; DateTime date=DataTime,Now; Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));
結(jié)果輸出
Thursday, June 16, 2005
參數(shù)format格式詳細(xì)用法:
格式字符 關(guān)聯(lián)屬性/說(shuō)明
d ShortDatePattern
D LongDatePattern
f 完整日期和時(shí)間(長(zhǎng)日期和短時(shí)間)
F FullDateTimePattern(長(zhǎng)日期和長(zhǎng)時(shí)間)
g 常規(guī)(短日期和短時(shí)間)
G 常規(guī)(短日期和長(zhǎng)時(shí)間)
m、M MonthDayPattern
r、R RFC1123Pattern
s 使用當(dāng)?shù)貢r(shí)間的 SortableDateTimePattern(基于 ISO 8601)
t ShortTimePattern
T LongTimePattern
u UniversalSortableDateTimePattern 用于顯示通用時(shí)間的格式
U 使用通用時(shí)間的完整日期和時(shí)間(長(zhǎng)日期和長(zhǎng)時(shí)間)
y、Y YearMonthPattern
下表列出了可被合并以構(gòu)造自定義模式的模式。這些模式是區(qū)分大小寫(xiě)的;例如,識(shí)別“MM”,但不識(shí)別“mm”。如果自定義模式包含空白字符或用單引號(hào)括起來(lái)的字符,則輸出字符串頁(yè)也將包含這些字符。未定義為格式模式的一部分或未定義為格式字符的字符按其原義復(fù)制。
格式模式 說(shuō)明
d 月中的某一天。一位數(shù)的日期沒(méi)有前導(dǎo)零。
dd 月中的某一天。一位數(shù)的日期有一個(gè)前導(dǎo)零。
ddd 周中某天的縮寫(xiě)名稱,在 AbbreviatedDayNames 中定義。
dddd 周中某天的完整名稱,在 DayNames 中定義。
M 月份數(shù)字。一位數(shù)的月份沒(méi)有前導(dǎo)零。
MM 月份數(shù)字。一位數(shù)的月份有一個(gè)前導(dǎo)零。
MMM 月份的縮寫(xiě)名稱,在 AbbreviatedMonthNames 中定義。
MMMM 月份的完整名稱,在 MonthNames 中定義。
y 不包含紀(jì)元的年份。如果不包含紀(jì)元的年份小于 10,則顯示不具有前導(dǎo)零的年份。
yy 不包含紀(jì)元的年份。如果不包含紀(jì)元的年份小于 10,則顯示具有前導(dǎo)零的年份。
yyyy 包括紀(jì)元的四位數(shù)的年份。
gg 時(shí)期或紀(jì)元。如果要設(shè)置格式的日期不具有關(guān)聯(lián)的時(shí)期或紀(jì)元字符串,則忽略該模式。
h 12 小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。
hh 12 小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。
H 24 小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。
HH 24 小時(shí)制的小時(shí)。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。
m 分鐘。一位數(shù)的分鐘數(shù)沒(méi)有前導(dǎo)零。
mm 分鐘。一位數(shù)的分鐘數(shù)有一個(gè)前導(dǎo)零。
s 秒。一位數(shù)的秒數(shù)沒(méi)有前導(dǎo)零。
ss 秒。一位數(shù)的秒數(shù)有一個(gè)前導(dǎo)零。
f 秒的小數(shù)精度為一位。其余數(shù)字被截?cái)唷?br />
ff 秒的小數(shù)精度為兩位。其余數(shù)字被截?cái)唷?br />
fff 秒的小數(shù)精度為三位。其余數(shù)字被截?cái)唷?br />
ffff 秒的小數(shù)精度為四位。其余數(shù)字被截?cái)唷?br />
fffff 秒的小數(shù)精度為五位。其余數(shù)字被截?cái)唷?br />
ffffff 秒的小數(shù)精度為六位。其余數(shù)字被截?cái)唷?br />
fffffff 秒的小數(shù)精度為七位。其余數(shù)字被截?cái)唷?br />
t 在 AMDesignator 或 PMDesignator 中定義的 AM/PM 指示項(xiàng)的第一個(gè)字符(如果存在)。
tt 在 AMDesignator 或 PMDesignator 中定義的 AM/PM 指示項(xiàng)(如果存在)。
z 時(shí)區(qū)偏移量(“+”或“-”后面僅跟小時(shí))。一位數(shù)的小時(shí)數(shù)沒(méi)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-8”。
zz 時(shí)區(qū)偏移量(“+”或“-”后面僅跟小時(shí))。一位數(shù)的小時(shí)數(shù)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-08”。
zzz 完整時(shí)區(qū)偏移量(“+”或“-”后面跟有小時(shí)和分鐘)。一位數(shù)的小時(shí)數(shù)和分鐘數(shù)有前導(dǎo)零。例如,太平洋標(biāo)準(zhǔn)時(shí)間是“-08:00”。
: 在 TimeSeparator 中定義的默認(rèn)時(shí)間分隔符。
/ 在 DateSeparator 中定義的默認(rèn)日期分隔符。
% c 其中 c 是格式模式(如果單獨(dú)使用)。如果格式模式與原義字符或其他格式模式合并,則可以省略“%”字符。
" c 其中 c 是任意字符。照原義顯示字符。若要顯示反斜杠字符,請(qǐng)使用“""”。
只有上面第二個(gè)表中列出的格式模式才能用于創(chuàng)建自定義模式;在第一個(gè)表中列出的標(biāo)準(zhǔn)格式字符不能用于創(chuàng)建自定義模式。自定義模式的長(zhǎng)度至少為兩個(gè)字符;例如,
DateTime.ToString( "d") 返回 DateTime 值;“d”是標(biāo)準(zhǔn)短日期模式。
DateTime.ToString( "%d") 返回月中的某天;“%d”是自定義模式。
DateTime.ToString( "d ") 返回后面跟有一個(gè)空白字符的月中的某天;“d”是自定義模式。
比較方便的是,上面的參數(shù)可以隨意組合,并且不會(huì)出錯(cuò),多試試,肯定會(huì)找到你要的時(shí)間格式
如要得到2005年06月 這樣格式的時(shí)間
可以這樣寫(xiě):
date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#中Decimal類(lèi)型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作
- C#實(shí)現(xiàn)百分比轉(zhuǎn)小數(shù)的方法
- C#中計(jì)算時(shí)間差中的小數(shù)問(wèn)題解決
- C# double和decimal數(shù)據(jù)類(lèi)型以截?cái)嗟姆绞奖A糁付ǖ男?shù)位數(shù)
- c#匹配整數(shù)和小數(shù)的正則表達(dá)式
- C# 小數(shù)位數(shù)保留的方法集錦
- C#適用于like語(yǔ)句的SQL格式化函數(shù)
- C# DataSet的內(nèi)容寫(xiě)成XML時(shí)如何格式化字段數(shù)據(jù)
- C#小數(shù)點(diǎn)格式化用法小結(jié)
相關(guān)文章
DevExpress根據(jù)條件設(shè)置GridControl RepositoryItem是否可編輯
這篇文章主要介紹了DevExpress根據(jù)條件設(shè)置GridControl RepositoryItem是否可編輯,需要的朋友可以參考下2014-08-08c# 調(diào)用.bat文件的實(shí)現(xiàn)代碼
c# 調(diào)用.bat文件主要利用了using System.Diagnostics;命名空間,大家可以參考下。2009-06-06C#通過(guò)KD樹(shù)進(jìn)行距離最近點(diǎn)的查找
這篇文章主要為大家詳細(xì)介紹了C#通過(guò)KD樹(shù)進(jìn)行距離最近點(diǎn)的查找,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09C#中實(shí)現(xiàn)抽象類(lèi)里建立靜態(tài)方法
這篇文章主要介紹了C#中實(shí)現(xiàn)抽象類(lèi)里建立靜態(tài)方法,需要的朋友可以參考下2014-07-07