赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

JAVA应用: 浮点数转化为大写中文金额

发布时间:2007.03.27 01:57     来源:赛迪网技术社区    作者:cyber3

读入一个浮点数值,将其转化为金额的中文大写方式.

试验要求:

当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字.

当金额中含有连续的0时,只需要一个"零"即可.

10的表示方式.例如110--壹佰一拾元整,10---一拾元整

--------------------------------------------------------------------------------

1import java.io.*;

2class chineseMoney...{

3 private String number[]=...{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

4 private String unit[]=...{"","拾","佰","仟"};

5 private String small[]=...{"角","分"};

6 //private String strNumber,strUnit,strAll;

7

8 //是否在number中

9 private boolean IsInNumber(String strNumber)

10 ...{

11 boolean inNumber=false;

12 for (int i=0;i<9;i++)

13 ...{

14 if (strNumber.compareTo (number[i])==0) inNumber=true;

15 }

16 return inNumber;

17 }

18

19

20 private String SplitChineseNumber(int intUnit,String strInt)

21 ...{

22 int l=strInt.length ();

23 int j,k,zeorCountTemp=0;

24 String strUnit="",strNumber="",strAll="";

25

26 //判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”;

27 boolean temp=false;

28 for (k=0;k29 ...{

30 String strTemp=strInt.substring(k,k+1);

31 int intTemp=Integer.parseInt(strTemp);

32

33 if (intTemp!=0) temp=true;

34 }

35 if (temp==false)

36 ...{

37 if (intUnit==5)return "";

38 }

39

40

41 int checkK=0;

42 //正式开始转换

43 for (k=0;k44 ...{

45 String strTemp=strInt.substring(k,k+1);

46 int intTemp=Integer.parseInt(strTemp);

47 strNumber= number[intTemp];

48

49 //j 从

50 j=l-1-k;

51

52 strUnit=unit[j];

53

54

55 //数值+单位

56 //如果数值=0,数值=“”

57 if (intTemp==0)

58 ...{

59 //

60 if (zeorCountTemp==0)

61 ...{

62 //单位=零

63 strUnit=strUnit.replace(''''拾'''',''''零'''');

64 strUnit=strUnit.replace(''''佰'''',''''零'''');

65 strUnit=strUnit.replace(''''仟'''',''''零'''');

66 }

67 else

68 ...{

69 //多零情况下,单位=“”

70 strUnit=strUnit.replaceAll("拾","");

71 strUnit=strUnit.replaceAll("佰","");

72 strUnit=strUnit.replaceAll("仟","");

73 }

74 zeorCountTemp++;

75 }

76 checkK=k;

77 strAll+=strNumber+strUnit;

78 }

79

80 return strAll;

81 }

82

83 private String onlyInt(int intInt)

84 ...{

85 String strInt;

86 strInt=String.valueOf(intInt);

87 int l=strInt.length();

88

89 String strAll="";

90 //按照四位 一分隔 来计算

91 if (l>8)//亿

92 ...{

93 strAll+=this.SplitChineseNumber(9,strInt.substring(0,l-8))+"亿";

94 strAll+=this.SplitChineseNumber(5,strInt.substring(l-8,l-4));

95 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"元";

96 }

97 else if (l>4)//万

98 ...{

99 strAll+=this.SplitChineseNumber(5,strInt.substring(0,l-4));

100 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"元";

101

102 }

103 else if (l>0)

104 ...{

105 strAll+=this.SplitChineseNumber(1,strInt)+"元";

106 }

107//

108//

109//

110//

111// 100101000

112 int checkL=strAll.length();

113

114 char strTemp2;

115 for (int k=1;k116 ...{

117 strTemp2=strAll.charAt(k);

118 if (strTemp2==''''零'''')

119 ...{

120 //判断零的前后是否有数字,无数字则删除这个零

121 String strBeforeTemp=strAll.substring(k-1,k);

122 String strAfterTemp=strAll.substring(k+1,k+2);

123 if (!this.IsInNumber(strBeforeTemp)&&!this.IsInNumber(strAfterTemp))

124 ...{

125 strBeforeTemp=strAll.substring(0,k);

126 strAfterTemp=strAll.substring(k+1,checkL);

127 strAll= strBeforeTemp+strAfterTemp;

128 break;

129 }

130

131 }

132 }

133

134 return strAll;

135

136 }

137

138 private String onlySmall(int intSmall)

139 ...{

140 String strNumber,strUnit,strAll;

141 strNumber="";strUnit="";strAll="";

142 String strSmall,strTemp;

143 strSmall=String.valueOf(intSmall);

144 int i;

145 if (intSmall>=10)

146 ...{

147 for (i=0;i148 ...{

149 strTemp=String.valueOf(intSmall).substring(i,i+1);

150 if (Integer.parseInt(strTemp)!=0)

151 ...{

152 strNumber=number[Integer.parseInt(strTemp)];

153 strUnit=small[i];

154 strAll+=strNumber+strUnit;

155 }

156 }

157 }

158 else

159 ...{

160 if (intSmall!=0)

161 ...{

162 strNumber=number[intSmall];

163 strUnit=small[1];

164 strAll+=strNumber+strUnit;

165 }

166 }

167

168 return strAll;

169 }

170

171 public String getChineseMoney(double number)

172 ...{

173 //四舍五入

174 number=(number*100+0.5)/100;

175

176 String strAll,strChineseInt,strChineseSmall,strZheng;;

177 int intInt,intSmall;

178 strChineseInt="";strChineseSmall="";strZheng="";

179

180 //整数部分

181 intInt=(int)( number*100/100);

182 if (intInt!=0)

183 ...{

184 strChineseInt=onlyInt(intInt);

185 }

186 //小数部分

187 double temp=(number-intInt)*100*100/100;

188 //对小数部分四舍五入

189 intSmall=(int)(temp*100+0.5)/100;

190 if (intSmall!=0)

191 ...{

192 strChineseSmall=onlySmall(intSmall);

193 }

194 else

195 ...{

196 strZheng="整";

197 }

198 strAll=strChineseInt+strChineseSmall+strZheng;

199 return strAll;

200 }

201 public static void main(String args[]) throws IOException

202 ...{

203 chineseMoney cm=new chineseMoney();

204 double money;

205 String strMoney,strChineseMoney;

206 strMoney="";

207 //读取

208 System.out.println("输入货币(四舍五入):");

209 BufferedReader cin = new BufferedReader(new InputStreamReader( System.in));

210 strMoney = cin.readLine();

211 money=Double.parseDouble(strMoney);

212 //money=12346.465;//Double.parseDouble(strMoney);

213 strChineseMoney=cm.getChineseMoney(money);

214 System.out.println(strChineseMoney);

215 }

216}

(t006)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 买服务器不如租 用戴尔服务器只要999 (03-11) · 盯紧你的钞票 专家手把手教你采购PC (03-05)
· 精明购机 购买PC时最易遇到的5大误区 (02-09) · 成本和应用 谁是RFID的当务之急? (02-06)
· 高手谈 Windows XP 中磁盘的分区应用 (01-22) · 数据库中通用数据转换工具应用简介 (01-19)
· 联想服务器 搭建内蒙古区“三网一库” (01-18) · Linux操作系统中GCC的应用介绍(下) (01-16)
· Linux操作系统中GCC的应用介绍(上) (01-16) · RS-485串行数据通信协议及其应用(图文) (01-09)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 整合平台模式多样化 多卡合一模式渐成主流
· 网店征税步入倒计时 电子商务或将重新洗牌
· 谈八大厂商的“云计算”理念 信息化监理
· 企业短信平台解决方案 方正智思系统软件
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统