科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JAVA应用: 浮点数转化为大写中文金额

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:cyber3 来源:赛迪网技术社区 2007年11月18日

关键字: 转化 浮点数 java

  • 评论
  • 分享微博
  • 分享邮件

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

试验要求:

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

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

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愪粙鏌ㄩ悢鍝勑㈤柣顓燁殜楠炴牕菐椤掆偓婵¤偐绱掗幇顓ф疁闁哄矉绻濆畷鍫曞煛娴i攱鐫忛梻浣告惈椤戝懘鏌婇敐澶婅摕闁哄浄绱曢悿鈧柣搴秵娴滅偞绂掗悙顒傜瘈婵炲牆鐏濋悘鐘绘煏閸喐鍊愮€殿喖顭峰鎾晬閸曨厽婢戦梺璇插嚱缂嶅棙绂嶉弽顓炵;闁规崘顕ч崘鈧銈嗘尪閸斿海绮欒箛娑欌拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�

    濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴濐潟閳ь剙鍊圭粋鎺斺偓锝庝簽閸旓箑顪冮妶鍡楀潑闁稿鎹囬弻娑㈡偄闁垮浠撮梺绯曟杹閸嬫挸顪冮妶鍡楀潑闁稿鎸剧槐鎾愁吋閸滃啳鍚Δ鐘靛仜閸燁偉鐏掗柣鐘叉穿鐏忔瑧绮i悙鐑樷拺鐟滅増甯掓禍浼存煕閹惧娲撮柟顔藉劤鐓ゆい蹇撴噳閹锋椽姊婚崒姘卞闁告娲熷畷濂稿Ψ閵壯勭叄婵犵數濮撮敃銈団偓姘煎弮瀹曪綀绠涢弮鍌滅槇婵犵數濮撮崐缁樻櫠濞戙垺鐓曢悗锝冨妼婵′粙鏌曢崶褍顏€殿喕绮欐俊姝岊槹闁逞屽墯鐢繝寮婚悢鍏煎癄濠㈣泛锕ュ▓濠氭⒑閸濆嫮鐏遍柛鐘崇墵楠炲啫饪伴崼婵堝幐闂佺ǹ鏈粙鎾广亹鐎n喗鐓熼幖娣€ゅḿ鎰箾閸欏顏堟偩濠靛牏鐭欓悹鎭掑妽濞堥箖姊洪崜鎻掍簼婵炲弶鐗犻幃鈥斥槈閵忥紕鍘遍柣蹇曞仜婢т粙鎯岀€n偆绠鹃柛顐ゅ枑閸婃劖鎱ㄦ繝鍕笡闁瑰嘲鎳愮划鐢碘偓锝庝簼閻d即姊绘担瑙勫仩闁告柨顑夊畷锟犲礃閼碱剚娈鹃梺闈涚箞閸婃洟宕橀埀顒€顪冮妶鍡楀闁稿骸宕惃顒勬⒒閸屾瑧鍔嶉悗绗涘懐鐭欓柟瀵稿Л閸嬫挸顫濋悡搴$睄閻庤娲戦崡鍐茬暦閸楃倣鐔兼⒐閹邦喚娉块梻鍌欑窔濞佳囨偋閸℃稑绠犻幖娣灪閸欏繑銇勯幒鍡椾壕闂佸疇顫夐崹鍧楀春閵夆晛骞㈡俊鐐插⒔閸戣绻濋悽闈浶為柛銊︽そ閺佸鏌ч懡銈呬沪濞e洤锕俊鍫曞川椤斿吋顏¢梻浣呵归鍛村磹閸︻厽宕叉繛鎴欏灩楠炪垺淇婇婵愬殭缁炬澘绉归弻锝嗘償閵忥絽顥濆銈忓閺佽顕g拠宸悑闁割偒鍋呴鍥⒒娴e憡鍟為柟鎼佺畺瀹曠増鎯旈…鎴炴櫔闂佹寧绻傞ˇ浠嬪极閸℃ぜ鈧帒顫濋濠傚闂佹椿鍘介〃鍡欐崲濞戙垹绠婚柡澶嬪灩閸斾即姊虹粙娆惧剱闁圭懓娲濠氭晲閸涱亝顫嶅┑鐐叉閸旀洜澹曢幎鑺モ拺闁告繂瀚﹢鎵磼鐎n偄鐏撮柛鈺冨仱楠炲鏁冮埀顒€顔忓┑鍥ヤ簻闁哄洨鍋為崳娲煃鐠囪鍔熺紒杈ㄦ崌瀹曟帒鈻庨幋婵嗩瀴婵$偑鍊戦崝宀勫箠濮椻偓楠炲棗鐣濋崟顐わ紲闂佺粯鍔欏ḿ褏绮婇敃鍌涚厵闁稿繗鍋愰弳姗€鏌涢弬璺ㄧ劯闁诡喚鍋ゅ畷褰掝敃閻樿京鐩庨梻浣告贡閸庛倝宕归悽鍓叉晜闁冲搫鎳忛崐鍨叏濮楀棗澧绘俊鎻掔秺閺屾洟宕惰椤忣厾鈧鍠曠划娆愪繆濮濆矈妲奸梺闈╃祷閸庡磭妲愰幘瀛樺缂佹稑顑呭▓顓炩攽閳藉棗浜濈紒璇茬墕椤曪絾绻濆顓炰簻缂佺偓濯芥ご鎼佸疾閿濆鍋℃繝濠傚暟鏁堥梺璇″枟閿曘垽骞婇悩娲绘晢闁稿本绮g槐鏌ユ⒑閸濆嫷妲搁柣妤€瀚板畷婵囨償閿濆洣绗夐梺缁樺姉閸庛倝鎮″☉銏″€堕柣鎰硾琚氶梺鍝ュУ閿曘垽寮婚埄鍐╁闁荤喐婢橀~鎺楁倵鐟欏嫭绀堥柛鐘崇墵閵嗕礁顫滈埀顒勫箖閳哄懏鎯炴い鎰╁€濋幏濠氭⒒閸屾艾鈧嘲霉閸パ呮殾闁割煈鍋呴崣蹇涙煙閹澘袚闁抽攱姊婚埀顒€绠嶉崕閬嵥囬鐐插瀭闁稿瞼鍋為悡銏′繆椤栨粌鐨戠紒杈ㄥ哺閺屻劌鈹戦崱鈺傂︾紓浣插亾閻庯綆鍋佹禍婊堟煛瀹ュ啫濡块柍钘夘槹缁绘盯宕奸悢铏圭厜濠殿喖锕ㄥ▍锝呪槈閻㈢ǹ宸濇い鏂惧嫎閳ь剚鍔曢—鍐Χ鎼粹€茬凹濠电偠灏欓崰鏍х暦濞差亜鐒垫い鎺嶉檷娴滄粓鏌熼崫鍕棞濞存粓绠栧娲箰鎼淬垻鈹涙繝纰樷偓铏悙閸楅亶鏌熼悧鍫熺凡缂侇偄绉归弻娑㈩敃閿濆洨鐣煎銈嗘尰濡炶棄顫忛搹鍦<婵☆垰鎼~宀勬倵濞堝灝娅橀柛鎾寸懆閻忓啴姊洪崨濠佺繁闁哥姵宀稿畷銏ゅ箹娴e厜鎷洪梺鍛婃尰瑜板啯绂嶆禒瀣厱閻庯綆浜滈顓㈡煙椤旀枻鑰块柡浣稿暣瀹曟帒鈽夊顒€绠為梻浣筋嚙閸戠晫绱為崱娑樼;闁糕剝蓱濞呯姵銇勯幒鎴濃偓鑽ゅ婵傚憡鐓曢悘鐐插⒔閳藉绱掑锕€娲﹂悡娆撴煟閻斿憡绶叉い蹇e弮閺岀喖鎮℃惔銏g闂佺懓寮堕幐鍐茬暦閻斿吋顥堟繛鎴炵懄閻濓繝姊婚崒姘偓鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸屾矮澹曞┑顔矫畷顒勫储鐎电硶鍋撶憴鍕缂傚秴锕濠氬幢濡ゅ﹤鎮戦梺鍛婁緱閸ㄧ晫妲愰柆宥嗙厽閹艰揪绱曢悾顓㈡煕鎼淬劋鎲鹃挊婵喢归崗鍏肩稇缁炬崘娉曢埀顒€绠嶉崕閬嵥囨导瀛樺亗闁哄洢鍨洪悡娑㈡煕閵夛絽鍔氬┑锛勫帶椤儻顧侀柛銊ゅ嵆濠€渚€姊虹紒妯撳湱绮旈鈧、鏃堝醇閻旇櫣鏆㈤梻鍌氬€烽悞锔锯偓绗涘懏宕查柛灞绢嚤濞戞鏃堝川椤撶姴骞掗梻浣告惈濞层垽宕瑰ú顏呭亗闁告劦浜濋崰鎰節婵犲倻澧曠紒鈧崼鐔稿弿婵☆垱瀵х涵楣冩煢閸愵亜鏋涢柡灞炬礃缁绘稖顦查悗姘卞厴瀹曟垿濡搁埡鍌楁嫼缂傚倷鐒﹂敋濠殿喖娲﹂妵鍕即閵娿儱绫嶉梺绯曟杺閸ㄨ棄顕i幘顔碱潊闁炽儲鏋奸崑鎾绘偨閸涘﹦鍙嗗┑鐘绘涧濡鍩€椤掑倹鍤€闁宠绉瑰畷鍫曞Ω閿濆嫮鐩庨梻濠庡亜濞诧妇绮欓幇鏉跨疅濡わ絽鍟悡娑㈡倶閻愰潧浜剧紒鈧€n兘鍋撶憴鍕濞存粌鐖奸妴浣割潨閳ь剟骞冮姀锛勯檮濠㈣泛顦辨径锟�

    重磅专题
    往期文章
    最新文章