格式输出函数vb format函数("1234.56##,##0.000")的显示结果是

2813人阅读
int&a&=&<span style="color:#878;
&&&//&#26684;式为sring输出
//&&&Label1.Text&=&string.Format(&asdfadsf{0}adsfasdf&,a);
//&&&Label2.Text&=&&asdfadsf&&#43;a.ToString()&#43;&adsfasdf&;
//&&&Label1.Text&=&string.Format(&asdfadsf{0:C}adsfasdf&,a);//asdfadsf¥1,234.00adsfasdf
//&&&Label2.Text&=&&asdfadsf&&#43;a.ToString(&C&)&#43;&adsfasdf&;//asdfadsf¥1,234.00adsfasdf
&&&double&b&=&<span style="color:#8.12543;
&&&a&=&<span style="color:#878;
&&&//&#26684;式为特殊的string样式输出
//&&&Label1.Text&=&string.Format(&asdfadsf{0:C}adsfasdf&,b);//asdfadsf¥1,234.13adsfasdf
//&&&Label2.Text&=&&asdfadsf&&#43;b.ToString(&C&)&#43;&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);//十进制--
//&&&Label2.Text&=&b.ToString(&d&);//十进制--相同的类型,转换报错
//&&&Label1.Text&=&string.Format(&{0:e}&,a);//指数--1.234568e&#43;007
//&&&Label2.Text&=&b.ToString(&e&);//指数--1.234125e&#43;003
//&&&Label1.Text&=&string.Format(&{0:f}&,a);//定点数--
//&&&Label2.Text&=&b.ToString(&f&);//定点数--1234.13
//&&&Label1.Text&=&string.Format(&{0:n}&,a);//数&#20540;--12,345,678.00
//&&&Label2.Text&=&b.ToString(&n&);//数&#20540;--1,234.13
//&&&Label1.Text&=&string.Format(&{0:x}&,a);//十六进制--bc614e
//&&&Label2.Text&=&b.ToString(&x&);//16--带有小数不能转换,出错
//&&&Label1.Text&=&string.Format(&{0:g}&,a);//通用为最紧凑--
//&&&Label2.Text&=&b.ToString(&g&);//通用为最紧凑--
//&&&Label1.Text&=&string.Format(&{0:r}&,a);//转来转去不损失精度--整数不允许用,报错
//&&&Label2.Text&=&b.ToString(&r&);//转来转去不损失精度--
&&&b&=&<span style="color:#8.12543;
&&&a&=&<span style="color:#8;
&&&//自定义模式输出:
//&&&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);//<span style="color:#.000
//&&&Label2.Text&=&string.Format(&{0:000.000}&,b);//<span style="color:#.125
&&&b&=&<span style="color:#821.12543;
&&&a&=&<span style="color:#878;
//&&&,&描述:数字分组,也用于增倍器
//&&&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
//&&&%&描述:&#26684;式为百分数
//&&&Label1.Text&=&string.Format(&{0:0%}&,a);//&%
//&&&Label2.Text&=&string.Format(&{0:#%}&,b);//&%
//&&&Label1.Text&=&string.Format(&{0:0.00%}&,a);//&.00%
//&&&Label2.Text&=&string.Format(&{0:#.00%}&,b);//&.54%
//&&&'abc'&描述:显示单引号内的文本
//&&&Label1.Text&=&string.Format(&{0:'文本'0}&,a);//&文本
//&&&Label2.Text&=&string.Format(&{0:文本 0}&,b);//&文本
//&&&/&描述:后跟1要打印字的字符,也用于转移符/n等
//&&&Label1.Text&=&string.Format(&/&你好! /&&);//&&你好!&
//&&&Label2.Text&=&string.Format(&//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
百分数&#26684;式应该用“p”这个参数。&
&#26684;式&原始数据&结&果&
&{0:P}&&<span style="color:#8&40%
数字&{0:N2}&<span style="color:#8&&
数字&{0:N0}&13&&
货币&{0:c2}&$<span style="color:#8&&
货币&{0:c4}&$<span style="color:#86&&
货币&&¥{0:N2}&&¥<span style="color:#8&&
科学计数法&{0:E3}&<span style="color:#8E&#43;001&&
百分数&{0:P}&<span style="color:#8%&P&and&p&present&the&same.&
日 期&{0:D}&日&&
日期&{0:d}&<span style="color:#8-11-25&&
日期&{0:f}&日&10:30&&
日期&{0:F}&日&10:30:00&&
日期&{0:s}&<span style="color:#8-11-26&10:30:00&&
时间&{0:T}&10:30:00&
DateTime&dt&=&DateTime.N
Label1.Text&=&dt.ToString();//<span style="color:#-11-5&13:21:25
Label2.Text&=&dt.ToFileTime().ToString();//<span style="color:#
Label3.Text&=&dt.ToFileTimeUtc().ToString();//<span style="color:#
Label4.Text&=&dt.ToLocalTime().ToString();//<span style="color:#-11-5&21:21:25
Label5.Text&=&dt.ToLongDateString().ToString();//<span style="color:#年11月5日
Label6.Text&=&dt.ToLongTimeString().ToString();//<span style="color:#:25
Label7.Text&=&dt.ToOADate().ToString();//<span style="color:#.
Label8.Text&=&dt.ToShortDateString().ToString();//<span style="color:#-11-5
Label9.Text&=&dt.ToShortTimeString().ToString();//<span style="color:#
Label10.Text&=&dt.ToUniversalTime().ToString();//<span style="color:#-11-5&5:21:25&
Label1.Text&=&dt.Year.ToString();//<span style="color:#
Label2.Text&=&dt.Date.ToString();//<span style="color:#-11-5&0:00:00
Label3.Text&=&dt.DayOfWeek.ToString();//Saturday
Label4.Text&=&dt.DayOfYear.ToString();//<span style="color:#
Label5.Text&=&dt.Hour.ToString();//13
Label6.Text&=&dt.Millisecond.ToString();//<span style="color:#
Label7.Text&=&dt.Minute.ToString();//30
Label8.Text&=&dt.Month.ToString();//11
Label9.Text&=&dt.Second.ToString();//28
Label10.Text&=&dt.Ticks.ToString();//<span style="color:#
Label11.Text&=&dt.TimeOfDay.ToString();//<span style="color:#:28.4412864&
Label1.Text&=&dt.ToString();//<span style="color:#-11-5&13:47:04
Label2.Text&=&dt.AddYears(1).ToString();//<span style="color:#-11-5&13:47:04
Label3.Text&=&dt.AddDays(<span style="color:#8).ToString();//<span style="color:#-11-6&16:11:04
Label4.Text&=&dt.AddHours(<span style="color:#8).ToString();//<span style="color:#-11-5&14:53:04
Label5.Text&=&dt.AddMilliseconds(<span style="color:#8).ToString();//<span style="color:#-11-5&13:47:04
Label6.Text&=&dt.AddMonths(1).ToString();//<span style="color:#-12-5&13:47:04
Label7.Text&=&dt.AddSeconds(<span style="color:#8).ToString();//<span style="color:#-11-5&13:47:05
Label8.Text&=&dt.AddMinutes(<span style="color:#8).ToString();//<span style="color:#-11-5&13:48:10
Label9.Text&=&dt.AddTicks(<span style="color:#8).ToString();//<span style="color:#-11-5&13:47:04
Label10.Text&=&<pareTo(dt).ToString();//0
Label11.Text&=&dt.Add(?).ToString();//问号为一个时间段&
Label1.Text&=&dt.Equals(&<span style="color:#-11-6&16:11:04&).ToString();//False
Label2.Text&=&dt.Equals(dt).ToString();//True
Label3.Text&=&dt.GetHashCode().ToString();//<span style="color:#8234
Label4.Text&=&dt.GetType().ToString();//System.DateTime
Label5.Text&=&dt.GetTypeCode().ToString();//DateTime&
Label1.Text&=&dt.GetDateTimeFormats('s')[0].ToString();//<span style="color:#-11-05T14:06:25
Label2.Text&=&dt.GetDateTimeFormats('t')[0].ToString();//<span style="color:#
Label3.Text&=&dt.GetDateTimeFormats('y')[0].ToString();//<span style="color:#年11月
Label4.Text&=&dt.GetDateTimeFormats('D')[0].ToString();//<span style="color:#年11月5日
Label5.Text&=&dt.GetDateTimeFormats('D')[1].ToString();//<span style="color:#&11&05
Label6.Text&=&dt.GetDateTimeFormats('D')[2].ToString();//星期六&2005&11&05
Label7.Text&=&dt.GetDateTimeFormats('D')[3].ToString();//星期六&日
Label8.Text&=&dt.GetDateTimeFormats('M')[0].ToString();//<span style="color:#日
Label9.Text&=&dt.GetDateTimeFormats('f')[0].ToString();//<span style="color:#年11月5日&14:06
Label10.Text&=&dt.GetDateTimeFormats('g')[0].ToString();//<span style="color:#-11-5&14:06
Label11.Text&=&dt.GetDateTimeFormats('r')[0].ToString();//Sat,&05&Nov&2005&14:06:25&GMT&
Label1.Text&=&string.Format(&{0:d}&,dt);//<span style="color:#-11-5
Label2.Text&=&string.Format(&{0:D}&,dt);//<span style="color:#年11月5日
Label3.Text&=&string.Format(&{0:f}&,dt);//<span style="color:#年11月5日&14:23
Label4.Text&=&string.Format(&{0:F}&,dt);//<span style="color:#年11月5日&14:23:23
Label5.Text&=&string.Format(&{0:g}&,dt);//<span style="color:#-11-5&14:23
Label6.Text&=&string.Format(&{0:G}&,dt);//<span style="color:#-11-5&14:23:23
Label7.Text&=&string.Format(&{0:M}&,dt);//<span style="color:#日
Label8.Text&=&string.Format(&{0:R}&,dt);//Sat,&05&Nov&2005&14:23:23&GMT
Label9.Text&=&string.Format(&{0:s}&,dt);//<span style="color:#-11-05T14:23:23
Label10.Text&&&string.Format(&{0:t}&,dt);//<span style="color:#
Label11.Text&=&string.Format(&{0:T}&,dt);//<span style="color:#:23
Label12.Text&=&string.Format(&{0:u}&,dt);//<span style="color:#-11-05&14:23:23Z
Label13.Text&=&string.Format(&{0:U}&,dt);//<span style="color:#年11月5日&6:23:23
Label14.Text&=&string.Format(&{0:Y}&,dt);//<span style="color:#年11月
Label15.Text&=&string.Format(&{0}&,dt);//<span style="color:#-11-5&14:23:23
Label16.Text&=&string.Format(&{0:yyyyMMddHHmmssffff}&,dt);
stringstr1&=string.Format(&{0:N1}&,<span style="color:#8);&&&&&&&&&&&&&&&&//result:&56,789.0
stringstr2&=string.Format(&{0:N2}&,<span style="color:#8);&&&&&&&&&&&&&&&&//result:&56,789.00
stringstr3&=string.Format(&{0:N3}&,<span style="color:#8);&&&&&&&&&&&&&&&&//result:&56,789.000
stringstr8&=string.Format(&{0:F1}&,<span style="color:#8);&&&&&&&&&&&&&&&&//result:&56789.0
stringstr9&=string.Format(&{0:F2}&,<span style="color:#8);&&&&&&&&&&&&&&&&//result:&56789.00
stringstr11&=(<span style="color:#8&/&<span style="color:#8).ToString(&#.##&);&&&&&&&&&&&&//result:&567.89
stringstr12&=(<span style="color:#8&/&<span style="color:#8).ToString(&#.##&);&&&&&&&&&&&&&&//result:&567
Console.Write(&{0:C}&,&<span style="color:#8);&&&//$2.50
Console.Write(&{0:C}&,&-<span style="color:#8);&//($2.50)
Console.Write(&{0:D5}&,&25);&&&//<span style="color:#
Console.Write(&{0:E}&,&<span style="color:#8);&&&//<span style="color:#000E&#43;005
Console.Write(&{0:F2}&,&25);&&&//<span style="color:#
Console.Write(&{0:F0}&,&25);&&&//25
Console.Write(&{0:G}&,&<span style="color:#8);&&&//<span style="color:#
Console.Write(&{0:N}&,&<span style="color:#80);&&&//<span style="color:#,000.00
Console.Write(&{0:X}&,&<span style="color:#8);&&&//FA
Console.Write(&{0:X}&,&0xffff);&&&//FFFF
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:485274次
积分:6956
积分:6956
排名:第1486名
原创:203篇
转载:138篇
评论:57条
(1)(1)(2)(1)(3)(12)(5)(3)(4)(1)(4)(1)(4)(1)(5)(7)(18)(3)(37)(26)(23)(1)(7)(4)(4)(11)(7)(2)(12)(1)(2)(11)(43)(8)(20)(14)(8)(15)(4)(1)(3)(3)(2)VB&#26684;式输出函数可以使数&#20540;、日期或字符串按指定的&#26684;式输出。其&#26684;式为:
Format(&表达式&[,&&&#26684;式字符串&])&
其中,&表达式&:要&#26684;式化的数&#20540;、日期或字符串表达式。
&&#26684;式字符串&:指定表达式的&#20540;的输出&#26684;式。&#26684;式字符有三类:数&#20540;&#26684;式、日期&#26684;式和字符串&#26684;式。&#26684;式字符要加引号。下面以例子说明&#26684;式输出函数中最常用的一些&#26684;式字符的使用。
Format 返回变体型
Format$ 强制返回为文本
Print&Format(123.45,&&)'&“0”为数字占位符。显示一位数字或零。结果为&&
Print&Format(123.45,&0.0&)'&结果为123.5&&
Print&Format(123.45,&####.###&)'&“#”为数字占位符。显示一位数字或什么都不显示。结果为123.45
Print&Format(123.45,&#.#&)'&结果为123.5&&
Print&Format(0.123,&.##&)'&结果为.12&&
Print&Format(0.123,&0.##&)'&结果为0.12&
也常用Format(&表达式&)将一个数&#20540;型数据转换成字符串。
例如:Format(3.14)的&#20540;为字符串&3.14&。
--------------------------------
数字类型的&#26684;式化
--------------------------------
固定&#26684;式参数:
General Number 普通数字,如可以用来去掉千位分隔号
format$(&100,123.12&,&General Number&) 返回&#2.12
Currency 货币类型,可添加千位分隔号和货币符号
format$(&&,&Currency&) 返回&#20540; ¥100,123.12
Fixed &#26684;式为带两位小数的数字
format$(&100123&,&Fixed&) 返回&#2.00
Standard 标准,即带千位分隔号和两位小数
format$(&100123&,&Standard&) 返回&#23.00
Percent 百分数
format$(&100123&,&Percent&) 返回&#200.00%
Scientific 科学记数法
format$(&100123&,&Scientific&) 返回&#2E&#43;05
Yes/No 当&#20540;为0时返回 NO,否则返回 YES
format$(&100123&,&Yes/No&) 返回&#20540; Yes
True/False 当&#20540;为0时返回 False,否则返回 True
format$(&100123&,&True/False&) 返回&#20540; True
On/Off 当&#20540;为0时返回 Off,否则返回 On
format$(&100123&,&Yes/No&) 返回&#20540; On
自定义&#26684;式参数
&& 不进行&#26684;式化 返回&#20540; 原&#20540;
0 占位&#26684;式化,不足补0
format$(&100123&,&0000000&) 返回&#23
# 占位&#26684;式化,不足时不补0
format$(&100123&,&#######&) 返回&#2
. 强制显示小数点
format$(&&,&.000&) 返回&#2.120
% 转化为百分数,一个%代表乘以100
format$(&10.23&,&0.00%&) 返回&#2.00%
format$(&10.23&,&0.00%%&) 返回&#2.00%%
, 以千为单位&#26684;化
format$(&10.23&,&,&) 返回&#20540; 0
format$(&10010.23&,&,&) 返回&#20540; 10
format$(&10010.23&,&,0.00&) 返回&#2
E- E&#43; e- e&#43; 显示为科学记数(要注意&#26684;式语句,否则会和E的其它含义相混)
Format$(12.5,&0.00E&#43;00&) 返回&#2E&#43;01
$ 强制显示货币符号
format$(&10.23&,&{threadcontent}.00&) 返回&#20540; ¥10.23
- &#43; ( ) space 按位置显示本样
Format$(&1234.56&,&-(0.00)&) 返回&#20540; -(1234.56)
\ 转义符,显示出特殊符号
Format$(&1234.56&,&\#.00&) 返回&#20540; #1234.56
&ABC& 显示双引号 (& &) 之内的字符串。如在代码中想在 format 中包含一个字符串,必须用 Chr(34) 将文本括起来(34 为双引号 (&))
Format$(123.45,&TTT&) 返回&#20540; TTT
注:当双引号中的文本包含特殊的参数符号如e,要使用转义符&\&,否则会按e的作用显示
; 类&#20284;多目运算符的作用。
当共有 四 部分时,
当大于0时,按第一部分进行&#26684;式化,
当小于0时按第二部分进行&#26684;式化,
当等于0时按第三部分进行&#26684;式化,
当为null&#20540;时,按第四部分进行&#26684;式化。如:
Format$(0,&0.00;负数;零;空&) 返回&#20540; 零
当共有 三 部分时,
当大于0时,按第一部分进行&#26684;式化,
当小于0时按第二部分进行&#26684;式化,
当等于0时按第三部分进行&#26684;式化,如:
Format$(-10,&0.00;零&) 返回&#20540; ttt
当共有 两 部分时,
当大于或等于0时,按第一部分进行&#26684;式化,
当小于0时按第二部分进行&#26684;式化,
Format$(-123,&0.00;abc&) 返回&#20540; abc
Format$(123,&0.00;abc&) 返回&#2
当共有 一 部分时,按分号左边进行&#26684;式化
---------------------------------
日期类型的&#26684;式化
---------------------------------
注意:在中文操作系统中,系统自动将月份输为如:五月,而非 May
固定&#26684;式参数
General Date 基本类型
Format$(Now,&General Date&) 返回&#2-5-25 14:56:15
Long Date 操作系统定义的长日期
Format$(Now,&Long Date&) 返回&#2年5月25日
Medium Date 中日期(yy/mmm/dd)
Format$(Now,&Medium Date&) 返回&#2月-25
Short Date 操作系统定义的短日期
Format$(Now,&Short Date&) 返回&#2-5-25
Long Time 操作系统定义的长时间
Format$(Now,&Long Time&) 返回&#2:36
Medium Time 带AM/PM的12小时制,不带秒
Format$(Now,&Medium Time&) 返回&#2 PM
Short Time 24时制的时间,不带秒
Format$(Now,&Short Time&) 返回&#2
自定义&#26684;式参数
: 用来标识时间字符的间隔
Format$(Time(),&hh:nn&) 返回&#2
/ 用来标识日期字符的间隔
Format$(now,&yyyy/mm/dd&) 返回&#2-05-25
c &#26684;式化为国标的日期和时间
Format$(Now,&c&) 返回&#2-5-25 14:56:15
y 一年中的第几天
Format$(Now,&y&) 返回&#2
d 一个月中的第几天(1-366)
Format$(Now,&d&) 返回&#20540; 25
dd 当小于10时前面带0的天数(01-31)
Format$(&&,&dd&) 返回&#20540; 07
Format$(Now,&ddd&) 返回&#20540; 周四
dddd 星期几
Format$(Now,&dddd&) 返回&#20540; 星期四
ddddd 显示标准日期
Format$(Now,&ddddd&) 返回&#2-05-25
dddddd 长日期
Format$(Now,&dddddd&) 返回&#2年5月25日
w 一个星期中的第几天
Format$(Now,&w&) 返回&#20540; 5
ww 一年中的第几周
Format$(Now,&ww&) 返回&#20540; 21
m 月数(注:当用于时间时,也可以表时为分钟)
Format$(Now,&m&) 返回&#20540; 5
Format$(Now,&h:m&) 返回&#2
mm 当小于10时前面带0的月数(注:当用于时间时,也可以表时为带0的分钟)
Format$(Now,&m&) 返回&#20540; 05
Format$(Now,&hh:mm&) 返回&#2
Format$(Now,&mmm&) 返回&#20540; 五月
q 一年中的第几季(1-4)
Format$(Now,&q&) 返回&#20540; 2
yy 两位数的年份(00-99)
Format$(Now,&yy&) 返回&#20540; 06
yyyy 四位数的年份()
Format$(Now,&yyyy&) 返回&#2
h 一天中的第N小时(0-23)
Format$(Now,&h&) 返回&#20540; 16
hh 当小于10时带0的小时数(00-23)
Format$(&7:30:28&,&hh&) 返回&#20540; 07
n 一小时的分钟数(0-59)
Format$(&7:30:28&,&n&) 返回&#20540; 30
nn 当小于10时带0的分钟数(00-59)
Format$(&7:3:28&,&n&) 返回&#20540; 03
s 一分钟中的秒数(0-59)
Format$(&7:30:8&,&s&) 返回&#20540; 8
ss 当小于10时带0的分钟数(00-59)
Format$(&7:3:8&,&ss&) 返回&#20540; 08
ttttt 标准时间,小时数当小于10时不带0,与h:mm:ss相同
Format$(&7:3:28&,&ttttt&) 返回&#2:28
AM/PM 显示当前为AM或为PM
Format$(Now,&AM/PM&) 返回&#20540; PM
A/P 显示当前为A或为P
Format$(Now,&A/P&) 返回&#20540; P
AMPM 对0至2359的数&#20540;进行判断是AM还是PM,可以看作是同等于对00:00至23:59的数字进行判断,如1000可以看作是10:00。
Format$(1000,&AMPM&) 返回&#20540; AM
联合&#26684;式化
m/d/yy Format$(Now,&m/d/yy&) 返回&#2-06
d-mmm-yy Format$(Now,&d-mmm-yy&) 返回&#2月-06
d-mmmm Format$(Now,&d-mmmm&) 返回&#20540; 25-五月
mmmm-yy Format$(Now,&mmmm-yy&) 返回&#20540; 五月-06
hh:mm AM/PM Format$(Now,&hh:mm AM/PM&) 返回&#2 PM
h:mm:ss a/p Format$(Now,&h:mm:ss a/p&) 返回&#2:38 p
h:mm Format$(Now,&h:mm&) 返回&#2
h:mm:ss Format$(Now,&h:mm:ss&) 返回&#2:38
m/d/yy h:mm Format$(Now,&m/d/yy h:mm&) 返回&#2-06 16:54
----------------------------------
文本类型的&#26684;式化
----------------------------------
; 当两部分时,则第一部分为非空&#26684;式化,第二部分为null&#20540;或空&#20540;的&#26684;式化表达式
@ 匹配位置插入&#26684;式化文本,占位位置不存在时,显示空白(空字符串)
只有一个@符号时,是在最后面加上&#26684;式化文本
Format$(&CHIN&,&@a&) 返回&#20540; CHINa
有多个@占位符,是按从右至左匹配,并在相应的位置上显示&#26684;式化文本
Format$(&CHIN&,&@a@@&) 返回&#20540; CHaIN
当与 ! 配合时,则变为从左至右匹配
Format$(&CHIN&,&@@&) 返回&#20540; CaHIN
当占位符比原文本字符串多时,刚在相应位置上添加空&#26684;
Format$(&C&,&@@a@&) 返回&#20540; 空白空白aC
& 字符占位符。除在当占位位置不存在时,不显示外,其余均与@相同
当占位符比原文本字符串多时,刚在相应位置上添加空&#26684;
Format$(&C&,&&&a&&) 返回&#20540; aC
& 强制小写。将所有字符以小写&#26684;式显示。
Format$(&I love you&,&&&) 返回&#20540; i love you
& 强制大写。将所有字符以大写&#26684;式显示。
Format$(&I love you&,&&&) 返回&#20540; I LOVE YOU
! 强制由左而右填充字符占位符。缺省&#20540;是由右而左填充字符占位符。
Format$(&CHIN&,&@@&) 返回&#20540; CaHIN
----------------------------------------
强制使用中文&#26684;式的日期时间
----------------------------------------
Format$(Now,&aaaa&) 返回&#20540; 星期五
O 中文月份
Format$(Now,&O&) 返回&#20540; 五月
o 单字节月份
Format$(Now,&o&) 返回&#20540; 5月
A 中文日期
Format$(Now,&A&) 返回&#20540; 二十六日
a 单字节日期
Format$(Now,&a&) 返回&#20540; 26日
E 短中文年份
Format$(Now,&E&) 返回&#20540; 六年
e 单单字节年份
Format$(Now,&e&) 返回&#20540; 6年
EE 中文年份
Format$(Now,&EE&) 返回&#20540; 二○○六年
ee 单字节年份
Format$(Now,&ee&) 返回&#2年
想不到中文日期的问题就这么容易解决:
Format$(Now,&EEOA&) 返回&#20540; 二○○六年五月二十六日
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36215次
排名:千里之外
原创:13篇
转载:25篇
(1)(1)(1)(1)(7)(1)(4)(2)(1)(1)(1)(3)(7)(5)(2)1743人阅读
如果我们用下列语句输出一个数
System.out.println();
将会在Console看到输出
那么如何得到123,456.789这种&#26684;式化的输出呢?这里就需要用到java.text.Format这个类。不仅是数字,它还提供了货币&#20540;和百分数的&#26684;式化输出,比如0.58的百分数输出形式是58%。要获得本地的默认&#26684;式,可以用下列方法获得
Java代码 &
NumberFormat.getNumberInstance() &&&&NumberFormat.getCurrencyInstance() &&&&NumberFormat.getOPercentInstance()&&
NumberFormat.getNumberInstance()
NumberFormat.getCurrencyInstance()
NumberFormat.getOPercentInstance()&
而要获得某个国家或地区的具体&#26684;式,可以使用参数Local.XXX,如Locale.GERMANY,Locale.UK。
Java代码 &
NumberFormat&formatter&=&NumberFormat.getNumberInstance(Locale.GERMANY);&&
NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY);&
Java代码 &
import&java.text.NumberF &&&&import&java.util.L &&&&public&class&FormatTest&{ &&&&&&&&public&static&void&main(String&args[])&{ &&&&&&&&&&&&&&&&&&&&&&&&double&d&=&<span style="color:#c0.0&/&<span style="color:#c0; &&&&&&&&&&&&System.out.println(&无&#26684;式化输出:&&&#43;&d); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&numberFormat&=&NumberFormat.getNumberInstance(); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&numberString&=&numberFormat.format(d); &&&&&&&&&&&&System.out.println(&本地默认&#26684;式输出数:&&&#43;&numberString); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&currencyFormat&=&NumberFormat.getCurrencyInstance(); &&&&&&&&&&&&System.out.println(&本地默认&#26684;式输出货币&#20540;:&&&#43;&currencyFormat.format(d)); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&percentFormat&=&NumberFormat.getPercentInstance(); &&&&&&&&&&&&System.out.println(&本地默认&#26684;式输出百分数:&&&#43;&percentFormat.format(d)); &&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&numberFormatG&=&NumberFormat &&&&&&&&&&&&&&&&&&&&.getNumberInstance(Locale.GERMANY); &&&&&&&&&&&&System.out.println(&德国数字输出形式:&&&#43;&numberFormatG.format(d)); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&currencyFormatG&=&NumberFormat &&&&&&&&&&&&&&&&&&&&.getCurrencyInstance(Locale.GERMANY); &&&&&&&&&&&&System.out.println(&德国货币输出形式:&&&#43;&currencyFormatG.format(d)); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&currencyFormatA&=&NumberFormat &&&&&&&&&&&&&&&&&&&&.getCurrencyInstance(Locale.US); &&&&&&&&&&&&System.out.println(&美国货币输出形式:&&&#43;&currencyFormatA.format(d)); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&percentFormatG&=&NumberFormat &&&&&&&&&&&&&&&&&&&&.getPercentInstance(Locale.GERMANY); &&&&&&&&&&&&System.out.println(&德国百分数输出形式:&&&#43;&percentFormatG.format(d)); &&&&&&&&&&&&System.exit(0); &&&&&&&&} &&&&}&&
import java.text.NumberF
import java.util.L
public class FormatTest {
public static void main(String args[]) {
// 不使用格式化输出数
double d = 10000.0 / 3.0;
System.out.println(&无格式化输出:& + d);
// 使用本地默认格式输出数
NumberFormat numberFormat = NumberFormat.getNumberInstance();
//numberFormat.setMaximumFractionDigits(4);
//numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println(&本地默认格式输出数:& + numberString);
// 使用本地默认格式输出货币值
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
System.out.println(&本地默认格式输出货币值:& + currencyFormat.format(d));
// 使用本地默认格式输出百分数
NumberFormat percentFormat = NumberFormat.getPercentInstance();
System.out.println(&本地默认格式输出百分数:& + percentFormat.format(d));
// 在不同的国家和地区数字表示的格式也有区别。如德国
// 使用德国的格式化输出数
NumberFormat numberFormatG = NumberFormat
.getNumberInstance(Locale.GERMANY);
System.out.println(&德国数字输出形式:& + numberFormatG.format(d));
// 使用德国货币输出形式
NumberFormat currencyFormatG = NumberFormat
.getCurrencyInstance(Locale.GERMANY);
System.out.println(&德国货币输出形式:& + currencyFormatG.format(d));
// 使用美国货币输出形式
NumberFormat currencyFormatA = NumberFormat
.getCurrencyInstance(Locale.US);
System.out.println(&美国货币输出形式:& + currencyFormatA.format(d));
// 使用德国百分数输出形式
NumberFormat percentFormatG = NumberFormat
.getPercentInstance(Locale.GERMANY);
System.out.println(&德国百分数输出形式:& + percentFormatG.format(d));
System.exit(0);
&!--[if !vml]--&&!--[endif]--&
由于欧元符号无法在此Console输出,所以显示?
可以指定显示的最多(或最少)整数位和小数位。如
Java代码 &
double&d&=&<span style="color:#c0.0&/&<span style="color:#c0; &&&&NumberFormat&numberFormat&=&NumberFormat.getNumberInstance(); &&&&numberFormat.setMaximumFractionDigits(4); &&&&numberFormat.setMinimumIntegerDigits(6); &&&&String&numberString&=&numberFormat.format(d); &&&&System.out.println(numberString);&&
double d = 10000.0 / 3.0;
NumberFormat numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println(numberString);&
003,333.3333。整数位不够的补零,小数截去部分四舍五入。
&&& 也可以利用NumberFormat的一个子类DecimalFormat来指定输出&#26684;式。
Java代码 &
DecimalFormat&decimalFormat&=&new&DecimalFormat(&######.0000&); &&&&String&s&=&decimalFormat.format(d);&&
DecimalFormat decimalFormat = new DecimalFormat(&######.0000&);
String s = decimalFormat.format(d);&
和前面一样,显示六个整数位和4个小数位。
下面对&#26684;式化的数字进行解析。
Java代码 &
import&java.util.L &&&&import&java.text.NumberF &&&&import&java.text.ParseE &&&&public&class&ParseFormat&{ &&&&&&&&public&static&void&main(String&args[])&{ &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&numberFormat1&=&NumberFormat.getNumberInstance(); &&&&&&&&&&&&Number&numb1&=&null; &&&&&&&&&&&&try&{ &&&&&&&&&&&&&&&&numb1&=&numberFormat1.parse(&33,333.33&); &&&&&&&&&&&&}&catch&(ParseException&e1)&{ &&&&&&&&&&&&&&&&System.err.println(e1); &&&&&&&&&&&&} &&&&&&&&&&&&System.out.println(numb1); &&&&&&&&&&&&&&&&&&&&&&&&NumberFormat&numberFormat2&=&NumberFormat &&&&&&&&&&&&&&&&&&&&.getNumberInstance(Locale.GERMAN); &&&&&&&&&&&&Number&numb2&=&null; &&&&&&&&&&&&try&{ &&&&&&&&&&&&&&&&numb2&=&numberFormat2.parse(&33,333.33&); &&&&&&&&&&&&}&catch&(ParseException&e2)&{ &&&&&&&&&&&&&&&&System.err.println(e2); &&&&&&&&&&&&} &&&&&&&&&&&&System.out.println(numb2); &&&&&&&&&&&&System.exit(0); &&&&&&&&} &&&&}&&
import java.util.L
import java.text.NumberF
import java.text.ParseE
public class ParseFormat {
public static void main(String args[]) {
// 本地格式的解析
NumberFormat numberFormat1 = NumberFormat.getNumberInstance();
Number numb1 =
numb1 = numberFormat1.parse(&33,333.33&);
} catch (ParseException e1) {
System.err.println(e1);
System.out.println(numb1);
// 以德国格式解析
NumberFormat numberFormat2 = NumberFormat
.getNumberInstance(Locale.GERMAN);
Number numb2 =
numb2 = numberFormat2.parse(&33,333.33&);
} catch (ParseException e2) {
System.err.println(e2);
System.out.println(numb2);
System.exit(0);
程序输出:
&&& 同样一种&#26684;式33,333.33,有人将之理解为33333.33,也有人认为它是33.333,软件国际化的重要性可见一斑。
Trackback:
浏览 (1563)
分类: 技术文章
locoray && 回复
&&&&&& java的数据&#26684;式化
java.text 包允许通过与特定语言无关的方式&#26684;式化文本消息、日期和数&#20540;。
1.数据&#26684;式化相关类介绍
类功能介绍
&&& java.util.*&&
&&& Locale&&& 表示一个语言和区域的特定组合
&&& ResourceBundle&&& ListResourceBundle
&&& PropertyResourceBundle&&& 获取本地化资源中(可以表现为类和资源文件)的信息
&&& Calendar&&&& GregorianCalendar&&& 日历的支持
&&& TimeZone&&&& SimpleTimeZone&&& 时区的支持
&&& Currency&&&& 单独处理和货币相关的操作
&&& java.text.*&&
&& Format&&& NumberFormat
&& DecimalFormat&&&&&&& &#26684;式化&&& &#26684;式化数字、货币以及百分数
&&& ChoiceFormat&&&&&&& 处理复数形式
&&& DateFormat&&& SimpleDateFormat&&&&&&& 日期和时间的&#26684;式化
&&& MessageFormat&&&   消息的&#26684;式化
&&& DecimalFormatSymbols、DateFormatSymbols&&&&&&& 自定义&#26684;式化中的符号集
&&& FieldPosition&&&&&&& 被Format及其子类用来在&#26684;式化输出中标识字段
&&& Collator&&& RuleBasedCollator&&& 字符串操作&&& 比较字符串
&&& CollationElementIterator&&&&&&& 获得一个字符串中单个字符的枚举信息
&&& CollationKey&&&&&&& 优化比较性能
&&& BreakIterator&&&&&&& 获得文本中的个体信息,比如字符、单词、句子以及整行等信息
&&& java.lang.*
&& Character&&& 检查字符属性
2.国际化及MessageFormat类
MessageFormat 运行开发者输出文本中的变量的&#26684;式,它主要用于国际化。它是一个强大的类,就像下面的例子展示的那样:
String message =
&&&&& &Once upon a time ({1,date}, & &#43;
&&&&& &around about {1,time,short}), there & &#43;
&&&&& &was a humble developer named Geppetto& &#43;
&&&&& & who slaved for &{0,number,integer}& &#43;
&&&&& &days with {2,number,percent} complete & &#43;
&&&&& &user requirements. &;
Object[ ] variables =
&&&&& new Object[ ] { new Integer(4),
&&&&&&&&&&&&&&&&&&&&& new Date( ),
&&&&&&&&&&&&&&&&&&&&& new Double(0.21)
&&&&&&&&&&&&&&&&&&& }
String output = MessageFormat.format( message, variables );
System.out.println(output);
隐藏在信息中的是描述输出的&#26684;式的一种短小的代码,范例的输出如下:
Once upon a time (Nov 3, 2002, around about 1:35 AM), there was a humble developer named Geppetto who slaved for 4 days with 21% complete user requirements.
如果相同的信息需要被重复输出但是变量的&#20540;不同,那么创建一个MessageFormat 对象并给出信息。下面是上面的例子的修正版:
// String output = MessageFormat.format( message, variables );
MessageFormat formatter = new MessageFormat(message);
String output = formatter.format(variables);
除了可以处理日期、时间、数字和百分数外,MessageFormat 也可以处理货币,运行更多的数字&#26684;式的控制并且允许指定ChoiceFormat。 MessageFormat 是一个极好的类,它应该经常被使用但是现在还没有。它的最大的缺点是数据是被作为变量传递而不是一个Properties对象。一个简单的解决办法是写一个封装类,它会预解析字符串为&#26684;式化的结果,将Properties的key转换为一个数组索引,顺序是Properties.keys( )返回的顺序。
3.数&#20540;&#26684;式化
3.1.有关numberformat
如果您来自美国,您会在较大的数&#20540;中间放置逗号来表示千和百万(等等,每三个数&#20540;使用一个逗号)。对于浮点数,您将在整数部分和小数部分之间放置小数点。对于金钱,货币符号 $ 放在金额的前面。如果 您从来没有到过美国以外的地方,可能就不会关心用英镑(£)来&#26684;式化的英国货币,或者用欧元(?)来表示的其他欧洲国家的货币。
对于那些我们确实关心的货币,我们可以使用 NumberFormat 及其相关的类来&#26684;式化它们。开发人员使用 NumberFormat 类来读取用户输入的数&#20540;,并&#26684;式化将要显示给用户看的输出。
在Java的I/O里,并没有所谓的型别,不管是int、long、double…最後都是以String输出,所以如果要让数字以特定&#26684;式输出,需透过Java提供的两个类别java.text.NumberFormat和java.text.DecimalFormat将数字&#26684;式化後再输出。
在开始使用NumberFormat时,应先用getInstance取得NumberFormat的实体,范例12中的 setMaximumIntegerDigits和setMinimumFractionDigits是用来设定整数和小数的位数,另外还有 setMinimumIntegerDigits和setMaximumFractionDigits也是同样功能。这些设定如有冲突,Java以最後设定的为准。
import java.text.*;
public class myFormat {
&&& public myFormat() {
&&&&&&& NumberFormat nf = NumberFormat.getInstance();
&&&&&&& double dblNum = Math.PI;
&&&&&&& System.out.println(dblNum);
&&&&&&& nf.setMaximumIntegerDigits(5);
&&&&&&& nf.setMinimumFractionDigits(4);
&&&&&&& System.out.println(&PI: & &#43; nf.format(dblNum));
public static void main(String[] args) {
&&&&& myFormat myFormat1 = new myFormat();
与 DateFormat 类&#20284;,NumberFormat 是一个抽象类。您永远不会创建它的实例??相反, 您总是使用它的子类。虽然可以通过子类的构造函数直接创建子类,不过NumberFormat 类提供了一系列 getXXXInstance() 方法,用以获得不同类型的数&#20540;类的特定地区版本。这样的方法共有五个:
getCurrencyInstance()
getInstance()
getIntegerInstance()
getNumberInstance()
getPercentInstance()
具体使用哪一个方法取决于您想要显示的数&#20540;类型(或者想要接受的输入类型)。每个方法都提供了两个版本??一个版本适用于当前地区,另一个版本接受一个 Locale作为参数,以便可能地指定一个不同的地区。
使用 NumberFormat 的基本过程是获得一个实例并使用该实例。挑选恰当的实例的确需要费一番思量。通常 您不希望使用通用的 getInstance 或者 getNumberInstance() 版本,因为 您不确切知道您将会得到什么。相反,您会使用像 getIntegerInstance() 这样的方法,因为 您希望把某些内容显示为整数而不需要任何小数&#20540;。清单1展示了这一点,我们在其中把数&#2 显示为适合于美国和德国的&#26684;式。
清单 1. 使用 NumberFormat
import java.text.*;
import java.util.*;
public class IntegerSample {
&&& public static void main(String args[]) {
&&&&&&& int amount = 54321;
&&&&&&& NumberFormat usFormat =
&&& NumberFormat.getIntegerInstance(Locale.US);
&&&&&& System.out.println(usFormat.format(amount));
&&&&&& NumberFormat germanFormat =
&&& NumberFormat.getIntegerInstance(Locale.GERMANY);
&&& System.out.println(germanFormat.format(amount));
运行该代码将产生如清单2所示的输出。注意第一种&#26684;式(美国)中的逗号分隔符和第二种&#26684;式中的点号分隔符。清单 2. NumberFormat 输出
虽然 NumberFormat 是一个抽象类,并且您将通过像 getIntegerInstance() 这样的各种方法来使用它的实例,但是 DecimalFormat 类提供了该类的一个具体版本。 您可以显式地指定字符模式,用以确定如何显示正数、负数、小数和指数。如果不喜欢用于不同地区的预定义&#26684;式,您可以创建自己的&#26684;式。(在内部,或许 NumberFormat 使用的就是 DecimalFormat。)。
3.2.使用 Currency 进行货币计算
前面提到过的 getCurrency() 和setCurrency() 方法返回新的 java.util.Currency 类的一个实例。这个类允许访问不同国家的 ISO 4217 货币代码。虽然自从 getCurrencyInstance() 引入以来您就能配合 NumberFormat 一起使用它,然而除了它们的数字显示外, 您永远不能获得或显示某个地区的货币符号。有了Currency 类,现在很容易就可以做到这一点。
正如前面提到过的,货币代码来自ISO 4217。通过传入某个国家的 Locale 或者货币的实际字母代码,Currency.getInstance() 将返回一个有效的 Currency 对象。NumberFormat 的 getCurrency() 方法将在创建特定地区的货币实例之后做同样的事情。 清单7显示了如何获得货币实例,以及如何&#26684;式化将要显示为货币的数&#20540;。记住这些转换仅用于显示。如果需要在货币之间转换金额,应该在确定如何显示&#20540;之前进行转换。
清单 7. 使用 getCurrencyInstance() 和 Currency
import java.text.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class CurrencySample {
public static void main(String args[]) {
&&& StringBuffer buffer = new StringBuffer(100);
&&& Currency dollars = Currency.getInstance(&USD&);
&&& Currency pounds = Currency.getInstance(Locale.UK);
&&& buffer.append(&Dollars: &);
&&& buffer.append(dollars.getSymbol());
&&& buffer.append(&\n&);
&&& buffer.append(&Pound Sterling: &);
&&& buffer.append(pounds.getSymbol());
&&& buffer.append(&\n-----\n&);
&&& double amount = 5000.25;
&&& NumberFormat usFormat = NumberFormat.getCurrencyInstance(Locale.US);
&&& buffer.append(&Symbol: &);
&&& buffer.append(usFormat.getCurrency().getSymbol());
&&& buffer.append(&\n&);
&&& buffer.append(usFormat.format(amount));
&&& buffer.append(&\n&);
&&& NumberFormat germanFormat =
&&&&&& NumberFormat.getCurrencyInstance(Locale.GERMANY);
&&& buffer.append(&Symbol: &);
&&& buffer.append(germanFormat.getCurrency().getSymbol());
&&& buffer.append(&\n&);
&&& buffer.append(germanFormat.format(amount));
&&& JFrame frame = new JFrame(&Currency&);
&&& frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
&&& JTextArea ta = new JTextArea(buffer.toString());
&&& JScrollPane pane = new JScrollPane(ta);
&&& frame.getContentPane().add(pane, BorderLayout.CENTER);
&&& frame.setSize(200, 200);
&&& frame.show();
遗憾的是,为欧元或者英镑返回的货币符号不是实际的符号,而是三位的货币代码(来自 ISO 4217)。然而在使用 getCurrencyInstance() 的情况下,实际的符号将会显示出来.
3.3.DecimalFormat
NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置&#26684;式化一个数字。你也可以使用非缺省的地区设置,例如德国。然后&#26684;式化方法根据特定的地区规则&#26684;式化数字。这个程序也可以使用一个简单的形式:
NumberFormat.getInstance().format(1234.56)
但是保存一个&#26684;式然后重用更加有效。国际化是&#26684;式化数字时的一个大问题。
另一个是对&#26684;式的有效控制,例如指定小数部分的位数,下面是解决这个问题的一个简单例子:
import java.text.DecimalF
import java.util.L
public class DecimalFormat2 {
&&& public static void main(String args[]) {
&&&&&&& // 得到本地的缺省&#26684;式
&&&&&&&& DecimalFormat df1 = new DecimalFormat(&####.000&);
&&&&&&& System.out.println(df1.format(1234.56));
&&&&&&& // 得到德国的&#26684;式
&&&&&&&& Locale.setDefault(Locale.GERMAN);
&&&&&&& DecimalFormat df2 = new DecimalFormat(&####.000&);
&&&&&&& System.out.println(df2.format(1234.56));
在这个例子中设置了数字的&#26684;式,使用像&####.000&的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。程序的输出:
相&#20284;的,也可以控制指数形式的&#26684;式,例如:
import java.text.DecimalF
public class DecimalFormat3 {
&&& public static void main(String args[]) {
&&&&&&& DecimalFormat df = new DecimalFormat(&0.000E0000&);
&&&&&&& System.out.println(df.format(1234.56));
1.235E0003
对于百分数:
import java.text.NumberF
public class DecimalFormat4 {
&&& public static void main(String args[]) {
&&&&&&& NumberFormat nf = NumberFormat.getPercentInstance();
&&&&&&& System.out.println(nf.format(0.47));
至此,你已经看到了&#26684;式化数字的几个不同的技术。另一方面,如何读取并解析包含&#26684;式化的数字的字符串?解析支持包含在NumberFormat中。例如:
import java.util.L
import java.text.NumberF
import java.text.ParseE
public class DecimalFormat5 {
public static void main(String args[]) {
&&& // 本地&#26684;式
&&&& NumberFormat nf1 = NumberFormat.getInstance();
&&& Object obj1 =
&&& // 基于&#26684;式的解析
&&&&&& obj1 = nf1.parse(&1234,56&);
&&& catch (ParseException e1) {
&&&&&& System.err.println(e1);
&&& System.out.println(obj1);
&&& // 德国&#26684;式
&&&& NumberFormat nf2 =NumberFormat.getInstance(Locale.GERMAN);
&&& Object obj2 =
&&& // 基于&#26684;式的解析
&&&& try {
&&&&&&& obj2 = nf2.parse(&1234,56&);
&&&&&&& catch (ParseException e2) {
&&&&&&& System.err.println(e2);
&&& System.out.println(obj2);
这个例子分两部分,都是解析一个字符串:&1234,56&。第一部分使用本地&#26684;式解析,第二部分使用德国&#26684;式解析。当程序在美国运行,结果是:
换句话说,&1234,56&在美国被认为是一个巨大的整数&123456&而在德国被认为是一个小数&1234.56&。
3.4.DecimalFormat 和 NumberFormat的联系
在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于获得很好的&#26684;式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢?
答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用 NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。下面是一个这样的例子:
import java.text.DecimalF
import java.text.NumberF
import java.util.L
public class DecimalFormat6 {
public static void main(String args[]) {
&&& DecimalFormat df =
&&& // 得到一个NumberFormat 对象并
&&& // 强制转换为一个 DecimalFormat 对象
&&&&&&& df = (DecimalFormat)NumberFormat.getInstance(Locale.GERMAN);
&&& catch (ClassCastException e) {
&&&&&&& System.err.println(e);
&&& // 设置&#26684;式模式
&&& df.applyPattern(&####.00000&);
&&& // format a number
&&& System.out.println(df.format(1234.56));
getInstance() 方法获得&#26684;式,然后调用applyPattern()方法设置&#26684;式模式,输出:
如果你不关心国际化,可以直接使用DecimalFormat 。
其中v 为未处理的double,scale为需求精度,返回需要小数位数的double
public static double round(double v,int scale){
&&&&&&& if(scale&0){
&&&&&&&&&&& throw new IllegalArgumentException(
&&&&&&&&&&&&&&& &The scale must be a positive integer or zero&);
&&&&&&& BigDecimal b = new BigDecimal(Double.toString(v));
&&&&&&& BigDecimal one = new BigDecimal(&1&);
&&&&&&& return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
package com.minght.sys.
import java.text.*;
import java.util.*;
import java.math.*;
* Title: &#26684;式化:开源,开放
* Description: opeansource
* Copyright: Copyright (c) 2004
* Company: ?海棠
* @author HaiTang Ming
* @version 1.0
public class ObjectFormat {
public ObjectFormat() {
&& * 将给定的数字按给定的形式输出
&& * @param d double
&& * @param pattern String
&& *&&&&&& #:表示有数字则输出数字,没有则空,如果输出位数多于#的位数,
&& *&&&&&&&&& 则超长输入
&& *&&&&&& 0:有数字则输出数字,没有补0
&& *&&&&&&&&& 对于小数,有几个#或0,就保留几位的小数;
&& *&&&&&& 例如: &###.00& --&表示输出的数&#20540;保留两位小数,不足两位的
&& *&&&&&&&&&&&&&&&&&&&&&&&&& 补0,多于两位的四舍五入
&& *&&&&&&&&&&&&& &###.0#& --&表示输出的数&#20540;可以保留一位或两位小数;
&& *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 整数显示为有一位小数,一位或两位小数
&& *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 的按原样显示,多于两位的四舍五入;
&& *&&&&&&&&&&&&& &###& ---&表示为整数,小数部分四舍五入
&& *&&&&&&&&&&&&& &.###& --&12.234显示为.234
&& *&&&&&&&&&&&&& &#,###.0#& --&表示整数每隔3位加一个&,&;
&& * @param l Locale
&& * @return String
public static String formatNumber(double d,String pattern,Locale l){
&&& String s = &&;
&&&&& DecimalFormat nf = (DecimalFormat) NumberFormat.getInstance(l);
&&&&& nf.applyPattern(pattern);
&&&&& s = nf.format(d);
&&& }catch(Exception e){
&&&&& e.printStackTrace();
&&&&& Debug.println(& formatNumber is error!&);
&& * 按缺省的区域输出数字形式
&& * @param d double
&& * @param pattern String
&& * @return String
public static String formatNumber(double d,String pattern){
&&& return formatNumber(d,pattern,Locale.getDefault());
&& * &#26684;式化货币
&& * @param d double
&& * @param pattern String
&& *&&&&&&& &\u00A4#,###.00& :显示为 ¥1,234,234.10
&& * @param l Locale
&& * @return String
public static String formatCurrency(double d,String pattern,Locale l){
&&& String s = &&;
&&&&& DecimalFormat nf = (DecimalFormat) NumberFormat.getCurrencyInstance(l);
&&&&& nf.applyPattern(pattern);
&&&&& s = nf.format(d);
&&& }catch(Exception e){
&&&&& e.printStackTrace();
&&&&& Debug.println(& formatNumber is error!&);
&& * 使用默认区域的指定方式显示货币
&& * @param d double
&& * @param pattern String
&& * @return String
public static String formatCurrency(double d,String pattern){
&&& return formatCurrency(d,pattern,Locale.getDefault());
&& * 使用默认方式显示货币:
&& *&&&& 例如:¥12,345.46 默认保留2位小数,四舍五入
&& * @param d double
&& * @return String
public static String formatCurrency(double d){
&&& String s = &&;
&&&& DecimalFormat nf = (DecimalFormat) NumberFormat.getCurrencyInstance();
&&&& s = nf.format(d);
&& }catch(Exception e){
&&&& e.printStackTrace();
&&&& Debug.println(& formatNumber is error!&);
&& * 按指定区域&#26684;式化百分数
&& * @param d
&& * @param pattern :&##,##.000%&--&不要忘记“%”
&& * @param l
&& * @return
public static String formatPercent(double d,String pattern,Locale l){
&&& String s = &&;
&&&&& DecimalFormat df = (DecimalFormat)NumberFormat.getPercentInstance(l);
&&&&& df.applyPattern(pattern);
&&&&& s = df.format(d);
&&& }catch(Exception e){
&&&&& Debug.print(e,&formatPercent is error!&);
&& * 使用默认区域&#26684;式化百分数
&& * @param d
&& * @param pattern
&& * @return
public static String formatPercent(double d,String pattern){
&& return formatPercent(d,pattern,Locale.getDefault());
* &#26684;式化百分数
* @param d
public static String formatPercent(double d){
&& String s = &&;
&&&& DecimalFormat df = (DecimalFormat)NumberFormat.getPercentInstance();
&&&& s = df.format(d);
&& }catch(Exception e){
&&&& Debug.print(e,&formatPercent is error!&);
&& * 输出数字的&#26684;式,如:1,234,567.89
&& * @param bd BigDecimal 要&#26684;式华的数字
&& * @param format String &#26684;式 &###,##0&
&& * @return String
public static String numberFormat(BigDecimal bd, String format) {
&&& if (bd == null || &0&.equals(bd.toString())) {
&&&&& return &&;
&&& DecimalFormat bf = new DecimalFormat(format);
&&& return bf.format(bd);
public static void main(String[] args) {
&&& String s = formatCurrency(,&$##,##.000&);
&&& System.out.println(s);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38116次
排名:千里之外
原创:15篇
评论:47条
(1)(1)(1)(1)(1)(3)(1)(1)(2)(1)(1)(1)(5)(1)(1)(1)

我要回帖

更多关于 delphi format函数 的文章

 

随机推荐