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

文章作者 100test 发表时间 2007:04:06 22:06:51
来源 100Test.Com百考试题网


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

试验要求:

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

当金额中含有连续的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}



相关文章


JAVA基础应用:日期时间选择控件(代码)
spring在MVC层解决JPA的缓迟加载问题
基于java的图片文件格式转换和线性缩放
applet调用javacomm20-win32API注意事项
JAVA应用:浮点数转化为大写中文金额
Java基础:看看流行的和过时的鼠标事件
初学者如何开发出一个高质量J2EE系统
JAVA基础应用:如何实现希尔排序算法
基于NetBeans比较JavaEE5平台和J2EE1.4
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛