Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1320032
  • 博文数量: 482
  • 博客积分: 13297
  • 博客等级: 上将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-12 16:25
文章分类

全部博文(482)

文章存档

2012年(9)

2011年(407)

2010年(66)

分类: C/C++

2010-09-07 20:24:46

格式化数值:有时,我们可能需要将数值以一定的格式来呈现,就需要对数值进行格式化。我们使用格式字符串指定格式。格式字符串采用以下形式: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 ToString() 格式化字符串 、C String.Format格式说明 - 云水禅心 - 云水禅心


     

C# ToString固定长度一个数值可用如下方法: 

例如i=1; 
i.ToString().PadLeft(10,'0'); 
固定长度为10,左不足补0,结果为0000000001; 

i=1; 
i.ToString("N").PadLeft(10,'0'); 
结果为00000001.00; 

i=1; 
i.ToString().PadLeft(10,' '); 
结果为 1;

C#格式化数值结果表

字符

说明

示例

输出

C货币string.Format("{0:C3}", 2)$2.000
D十进制string.Format("{0:D3}", 2)002
E科学计数法1.20E+0011.20E+001
G常规string.Format("{0:G}", 2)2
N用分号隔开的数字string.Format("{0:N}", 250000)250,000.00
X十六进制string.Format("{0:X000}", 12)C


string.Format("{0:000.000}", 12.2)012.200

Strings

There really isn't any formatting within a strong, beyond it's alignment. Alignment works for any argument being printed in a String.Format call.

 

SampleGenerates
String.Format("->{1,10}<-", "Hello");-> Hello<-
String.Format("->{1,-10}<-", "Hello");->Hello <-

Numbers

Basic number formatting specifiers:

 

SpecifierTypeFormat

Output 
(Passed 
Double 1.42)

Output 
(Passed 
Int -12400)

cCurrency{0:c}$1.42-$12,400
dDecimal (Whole number){0:d}System.
FormatException
-12400
eScientific{0:e}1.420000e+000-1.240000e+004
fFixed point{0:f}1.42-12400.00
gGeneral{0:g}1.42-12400
nNumber with commas for thousands{0:n}1.42-12,400
rRound trippable{0:r}1.42System.
FormatException
xHexadecimal{0:x4}System.
FormatException
cf90

Custom number formatting:

 

SpecifierTypeExampleOutput (Passed Double 1500.42)Note
0Zero placeholder{0:00.0000}1500.4200Pads with zeroes.
#Digit placeholder{0:(#).##}(1500).42 
.Decimal point{0:0.0}1500.4 
,Thousand separator{0:0,0}1,500Must be between two zeroes.
,.Number scaling{0:0,.}2Comma adjacent to Period scales by 1000.
%Percent{0:0%}150042%Multiplies by 100, adds % sign.
eExponent placeholder{0:00e+0}15e+2Many exponent formats available.
;Group separatorsee below  

The group separator is especially useful for formatting currency values which require that negative values be enclosed in parentheses. This currency formatting example at the bottom of this document makes it obvious:

Dates

Note that date formatting is especially dependant on the system's regional settings; the example strings here are from my local locale.

 

SpecifierTypeExample (Passed System.DateTime.Now)
dShort date10/12/2002
DLong dateDecember 10, 2002
tShort time10:11 PM
TLong time10:11:29 PM
fFull date & timeDecember 10, 2002 10:11 PM
FFull date & time (long)December 10, 2002 10:11:29 PM
gDefault date & time10/12/2002 10:11 PM
GDefault date & time (long)10/12/2002 10:11:29 PM
MMonth day patternDecember 10
rRFC1123 date stringTue, 10 Dec 2002 22:11:29 GMT
sSortable date string2002-12-10T22:11:29
uUniversal sortable, local time2002-12-10 22:13:50Z
UUniversal sortable, GMTDecember 11, 2002 3:13:50 AM
YYear month patternDecember, 2002

The 'U' specifier seems broken; that string certainly isn't sortable.

Custom date formatting:

 

SpecifierTypeExampleExample Output
ddDay{0:dd}10
dddDay name{0:ddd}Tue
ddddFull day name{0:dddd}Tuesday
f, ff, ...Second fractions{0:fff}932
gg, ...Era{0:gg}A.D.
hh2 digit hour{0:hh}10
HH2 digit hour, 24hr format{0:HH}22
mmMinute 00-59{0:mm}38
MMMonth 01-12{0:MM}12
MMMMonth abbreviation{0:MMM}Dec
MMMMFull month name{0:MMMM}December
ssSeconds 00-59{0:ss}46
ttAM or PM{0:tt}PM
yyYear, 2 digits{0:yy}02
yyyyYear{0:yyyy}2002
zzTimezone offset, 2 digits{0:zz}-05
zzzFull timezone offset{0:zzz}-05:00
:Separator{0:hh:mm:ss}10:43:20
/Separator{0:dd/MM/yyyy}10/12/2002

Enumerations

 

SpecifierType
gDefault (Flag names if available, otherwise decimal)
fFlags always
dInteger always
xEight digit hex.

Some Useful Examples

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

This will output "$1,240.00" if passed 1243.50. It will output the same format but in parentheses if the number is negative, and will output the string "Zero" if the number is zero.

String.Format("{0:(###) ###-####}", 18005551212);

This will output "(800) 555-1212".

 

变量.ToString()


字符型转换 转为字符串 
12345.ToString("n"); //生成 12,345.00 
12345.ToString("C"); //生成 ¥12,345.00 
12345.ToString("e"); //生成 1.234500e+004 
12345.ToString("f4"); //生成 12345.0000 
12345.ToString("x"); //生成 3039 (16进制) 
12345.ToString("p"); //生成 1,234,500.00%




 

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

 

formatCode 是可选的格式化代码字符串。(详细内容请搜索“格式化字符串”查看)

必须用“{”和“}”将格式与其他字符分开。如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即: “{{”或者“}}”。

常用格式举例:

(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 

阅读(1055) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-10 20:17:13

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com