Java编写的金额转中文大写
来源:互联网 发布:喜欢的衣服淘宝上没有 编辑:程序博客网 时间:2024/04/29 17:23
package com.coxon.finance.tool; 2 3 public class ChinaNumber 4 { 5 6 private static String[] CH = { "", "", "拾", "佰", "仟", "万", "", "", "", "亿", "", "", "", "兆" }; 7 8 private static String[] CHS_NUMBER={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 9 10 /** 11 * 传入数字金额字符串,返回数字金额对应的中文大字与读法 12 * 13 * @param money 14 * 金额字符串 15 * @return 金额中文大写 16 */ 17 public static String getCHSNumber(String money) 18 { 19 String chs = ""; 20 21 String tmp_int = money.substring(0, money.indexOf(".")); 22 String tmp_down = money.substring(money.indexOf(".") + 1, money.length()); 23 24 char[] tmp_int_char = tmp_int.toCharArray(); 25 String[] tmp_chs = new String[tmp_int_char.length]; 26 27 int tab = 0; 28 for (int i = 0; i < tmp_int_char.length; i++) 29 { 30 31 tab = tmp_int_char.length - i - 1; 32 33 if (tmp_int_char.length <= 5) 34 { 35 tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")]; 36 37 if (!tmp_chs[tab].equals("零")) 38 { 39 40 // tmp_int_char.length - i 为数字所在的位数 41 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i]; 42 } else 43 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 44 if (!chs.endsWith("零") && tab != 0) 45 { 46 chs = chs + tmp_chs[tab]; 47 48 } else if (chs.endsWith("零") && tab == 0) 49 { 50 chs = chs.substring(0, chs.length() - 1); 51 } 52 53 } 54 } 55 56 // 如果数字的位数大于5和小于9时 57 if (tmp_int_char.length > 5 && tmp_int_char.length < 9) 58 { 59 tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")]; 60 61 // 如:123,1234分成两部分 62 // 第1部分123:万以上亿以下 63 if (tab >= 4) 64 { 65 // 当前数字不是大小零时 66 if (!tmp_chs[tab].equals("零")) 67 { 68 chs = chs + tmp_chs[tab] + CH[tab - 3]; 69 70 // 当第1部分算完时在加上"万" 71 if (tab == 4) 72 { 73 chs = chs + "万"; 74 } 75 76 } else 77 { 78 // 当前数字为大小"零"时 79 // 判断前一次形成在字符串结尾有没有零 80 // 如果没有零就加上零 81 if (!chs.endsWith("零")) 82 { 83 chs = chs + tmp_chs[tab]; 84 85 } 86 87 // 当第1部分算完时 88 89 if (tab == 4) 90 { 91 // 先判断字符串有没有零 92 // 如果有零时就把零去掉再加上"万" 93 if (chs.endsWith("零")) 94 { 95 chs = chs.substring(0, chs.length() - 1); 96 chs = chs + "万"; 97 } else 98 { 99 // 如果没有零就直接加上"万"100 chs = chs + "万";101 }102 }103 }104 }105 106 // 如:123,1234分成两部分107 // 第1部分1234:万以下108 if (tab < 4)109 {110 111 if (!tmp_chs[tab].equals("零"))112 {113 114 // tmp_int_char.length - i 为数字所在的位数115 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];116 } else117 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零118 if (!chs.endsWith("零") && tab != 0)119 {120 chs = chs + tmp_chs[tab];121 122 }123 124 if (chs.endsWith("零") && tab == 0)125 {126 chs = chs.substring(0, chs.length() - 1);127 }128 }129 }130 }131 132 // 如果数字的位数大于5和小于9时133 if (tmp_int_char.length >= 9 && tmp_int_char.length <= 12)134 {135 tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];136 137 if (tab >= 8 && tab < 12)138 {139 // 当前数字不是大小零时140 if (!tmp_chs[tab].equals("零"))141 {142 chs = chs + tmp_chs[tab] + CH[tab - 7];143 144 // 当第1部分算完时在加上"万"145 if (tab == 8)146 {147 chs = chs + "亿";148 }149 150 } else151 {152 // 当前数字为大小"零"时153 // 判断前一次形成在字符串结尾有没有零154 // 如果没有零就加上零155 if (!chs.endsWith("零"))156 {157 chs = chs + tmp_chs[tab];158 159 }160 161 // 当第1部分算完时162 163 if (tab == 8)164 {165 // 先判断字符串有没有零166 // 如果有零时就把零去掉再加上"万"167 if (chs.endsWith("零"))168 {169 chs = chs.substring(0, chs.length() - 1);170 chs = chs + "亿";171 } else172 {173 // 如果没有零就直接加上"万"174 chs = chs + "亿";175 }176 }177 }178 }179 // 如:123,1234分成两部分180 // 第1部分123:万以上亿以下181 if (tab >= 4 && tab < 8)182 {183 // 当前数字不是大小零时184 if (!tmp_chs[tab].equals("零"))185 {186 chs = chs + tmp_chs[tab] + CH[tab - 3];187 188 // 当第1部分算完时在加上"万"189 if (tab == 4)190 {191 chs = chs + "万";192 }193 194 } else195 {196 // 当前数字为大小"零"时197 // 判断前一次形成在字符串结尾有没有零198 // 如果没有零就加上零199 if (!chs.endsWith("零"))200 {201 chs = chs + tmp_chs[tab];202 203 }204 205 // 当第1部分算完时206 207 if (tab == 4)208 {209 // 先判断字符串有没有零210 // 如果有零时就把零去掉再加上"万"211 if (chs.endsWith("零"))212 {213 chs = chs.substring(0, chs.length() - 1);214 215 if (!chs.endsWith("亿"))216 chs = chs + "万";217 } else218 {219 // 如果没有零就直接加上"万"220 if (!chs.endsWith("亿"))221 chs = chs + "万";222 }223 }224 }225 }226 227 // 如:123,1234分成两部分228 // 第1部分1234:万以下229 if (tab < 4)230 {231 232 if (!tmp_chs[tab].equals("零"))233 {234 235 // tmp_int_char.length - i 为数字所在的位数236 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];237 } else238 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零239 if (!chs.endsWith("零") && tab != 0)240 {241 chs = chs + tmp_chs[tab];242 243 }244 245 if (chs.endsWith("零") && tab == 0)246 {247 chs = chs.substring(0, chs.length() - 1);248 }249 }250 }251 }252 253 // 如果数字的位数大于12和小于16时254 if (tmp_int_char.length > 12 && tmp_int_char.length <= 16)255 {256 tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];257 258 if (tab >= 12 && tab < 16)259 {260 // 当前数字不是大小零时261 if (!tmp_chs[tab].equals("零"))262 {263 chs = chs + tmp_chs[tab] + CH[tab - 11];264 265 // 当第1部分算完时在加上"万"266 if (tab == 12)267 {268 chs = chs + "兆";269 }270 271 } else272 {273 // 当前数字为大小"零"时274 // 判断前一次形成在字符串结尾有没有零275 // 如果没有零就加上零276 if (!chs.endsWith("零"))277 {278 chs = chs + tmp_chs[tab];279 280 }281 282 // 当第1部分算完时283 284 if (tab == 12)285 {286 // 先判断字符串有没有零287 // 如果有零时就把零去掉再加上"万"288 if (chs.endsWith("零"))289 {290 chs = chs.substring(0, chs.length() - 1);291 chs = chs + "兆";292 } else293 {294 // 如果没有零就直接加上"万"295 chs = chs + "兆";296 }297 }298 }299 }300 301 if (tab >= 8 && tab < 12)302 {303 // 当前数字不是大小零时304 if (!tmp_chs[tab].equals("零"))305 {306 chs = chs + tmp_chs[tab] + CH[tab - 7];307 308 // 当第1部分算完时在加上"万"309 if (tab == 8)310 {311 chs = chs + "亿";312 }313 314 } else315 {316 // 当前数字为大小"零"时317 // 判断前一次形成在字符串结尾有没有零318 // 如果没有零就加上零319 if (!chs.endsWith("零"))320 {321 chs = chs + tmp_chs[tab];322 323 }324 325 // 当第1部分算完时326 327 if (tab == 8)328 {329 // 先判断字符串有没有零330 // 如果有零时就把零去掉再加上"万"331 if (chs.endsWith("零"))332 {333 chs = chs.substring(0, chs.length() - 1);334 if (!chs.endsWith("兆"))335 chs = chs + "亿";336 } else337 {338 // 如果没有零就直接加上"万"339 if (!chs.endsWith("兆"))340 chs = chs + "亿";341 }342 }343 }344 }345 // 如:123,1234分成两部分346 // 第1部分123:万以上亿以下347 if (tab >= 4 && tab < 8)348 {349 // 当前数字不是大小零时350 if (!tmp_chs[tab].equals("零"))351 {352 chs = chs + tmp_chs[tab] + CH[tab - 3];353 354 // 当第1部分算完时在加上"万"355 if (tab == 4)356 {357 chs = chs + "万";358 }359 360 } else361 {362 // 当前数字为大小"零"时363 // 判断前一次形成在字符串结尾有没有零364 // 如果没有零就加上零365 if (!chs.endsWith("零"))366 {367 chs = chs + tmp_chs[tab];368 369 }370 371 // 当第1部分算完时372 373 if (tab == 4)374 {375 // 先判断字符串有没有零376 // 如果有零时就把零去掉再加上"万"377 if (chs.endsWith("零"))378 {379 chs = chs.substring(0, chs.length() - 1);380 381 if (!chs.endsWith("亿"))382 if (!chs.endsWith("兆"))383 if (!chs.endsWith("兆"))384 chs = chs + "万";385 } else386 {387 // 如果没有零就直接加上"万"388 if (!chs.endsWith("亿"))389 if (!chs.endsWith("兆"))390 chs = chs + "万";391 }392 }393 }394 }395 396 // 如:123,1234分成两部分397 // 第1部分1234:万以下398 if (tab < 4)399 {400 401 if (!tmp_chs[tab].equals("零"))402 {403 404 // tmp_int_char.length - i 为数字所在的位数405 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];406 } else407 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零408 if (!chs.endsWith("零") && tab != 0)409 {410 chs = chs + tmp_chs[tab];411 412 }413 414 if (chs.endsWith("零") && tab == 0)415 {416 chs = chs.substring(0, chs.length() - 1);417 }418 }419 }420 }421 422 // 如果数字的位数大于16423 if (tmp_int_char.length > 16)424 {425 tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];426 427 if (tab >= 12)428 {429 chs = chs + tmp_chs[tab];430 431 // 当第1部分算完时在加上"万"432 if (tab == 12)433 {434 chs = chs + "兆";435 }436 437 }438 439 if (tab >= 8 && tab < 12)440 {441 // 当前数字不是大小零时442 if (!tmp_chs[tab].equals("零"))443 {444 chs = chs + tmp_chs[tab] + CH[tab - 7];445 446 // 当第1部分算完时在加上"万"447 if (tab == 8)448 {449 chs = chs + "亿";450 }451 452 } else453 {454 // 当前数字为大小"零"时455 // 判断前一次形成在字符串结尾有没有零456 // 如果没有零就加上零457 if (!chs.endsWith("零"))458 {459 chs = chs + tmp_chs[tab];460 461 }462 463 // 当第1部分算完时464 465 if (tab == 8)466 {467 // 先判断字符串有没有零468 // 如果有零时就把零去掉再加上"万"469 if (chs.endsWith("零"))470 {471 chs = chs.substring(0, chs.length() - 1);472 if (!chs.endsWith("兆"))473 chs = chs + "亿";474 } else475 {476 // 如果没有零就直接加上"万"477 if (!chs.endsWith("兆"))478 chs = chs + "亿";479 }480 }481 }482 }483 // 如:123,1234分成两部分484 // 第1部分123:万以上亿以下485 if (tab >= 4 && tab < 8)486 {487 // 当前数字不是大小零时488 if (!tmp_chs[tab].equals("零"))489 {490 chs = chs + tmp_chs[tab] + CH[tab - 3];491 492 // 当第1部分算完时在加上"万"493 if (tab == 4)494 {495 chs = chs + "万";496 }497 498 } else499 {500 // 当前数字为大小"零"时501 // 判断前一次形成在字符串结尾有没有零502 // 如果没有零就加上零503 if (!chs.endsWith("零"))504 {505 chs = chs + tmp_chs[tab];506 507 }508 509 // 当第1部分算完时510 511 if (tab == 4)512 {513 // 先判断字符串有没有零514 // 如果有零时就把零去掉再加上"万"515 if (chs.endsWith("零"))516 {517 chs = chs.substring(0, chs.length() - 1);518 519 if (!chs.endsWith("兆"))520 521 if (!chs.endsWith("亿"))522 523 chs = chs + "万";524 } else525 {526 // 如果没有零就直接加上"万"527 if (!chs.endsWith("兆"))528 529 if (!chs.endsWith("亿"))530 chs = chs + "万";531 }532 }533 }534 }535 536 // 如:123,1234分成两部分537 // 第1部分1234:万以下538 if (tab < 4)539 {540 541 if (!tmp_chs[tab].equals("零"))542 {543 544 // tmp_int_char.length - i 为数字所在的位数545 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];546 } else547 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零548 if (!chs.endsWith("零") && tab != 0)549 {550 chs = chs + tmp_chs[tab];551 552 }553 554 if (chs.endsWith("零") && tab == 0)555 {556 chs = chs.substring(0, chs.length() - 1);557 }558 }559 }560 }561 }562 563 if (tmp_down != null)564 {565 char[] tmp = tmp_down.toCharArray();566 567 if (tmp.length == 1)568 {569 if (tmp[0] != '0')570 chs = chs + "元" + CHS_NUMBER[(int) Float.parseFloat(tmp[0] + ".0")] + "角整";571 else572 chs = chs + "元整";573 } else574 {575 if (tmp[1] != '0' && tmp[0] != '0')576 {577 chs = chs + "元" + CHS_NUMBER[(int) Float.parseFloat(tmp[0] + ".0")] + "角"578 + CHS_NUMBER[(int) Float.parseFloat(tmp[1] + ".0")] + "分";579 } else if (tmp[1] != '0' && tmp[0] == '0')580 {581 chs = chs + "元零" + CHS_NUMBER[(int) Float.parseFloat(tmp[1] + ".0")] + "分";582 }583 }584 585 } else586 {587 chs = chs + "元整";588 }589 590 return chs;591 }592 593 public static void main(String[] args)594 {595 String m = "6136347.42";596 System.out.println(ChinaNumber.getCHSNumber(m));597 m = "641295403.34";598 System.out.println(ChinaNumber.getCHSNumber(m));599 }600 }
0 0
- Java编写的金额转中文大写
- java金额转中文大写
- java编写金额小写转大写
- JAVA中金额的中文大写方式
- Java 作业 金额的中文大写方式
- Java--金额的中文大写形式
- 金额数字转中文大写(转)(java)
- Java金额数字转中文大写
- 金额转中文大写
- 金额转中文大写
- Java中文大写金额转换
- 超级简单的大写金额转换--阿拉伯数字转中文大写
- 金额的中文大写方式
- java 金额转大写
- PHP数字金额转中文大写金额
- php阿拉伯数字金额转中文大写金额
- 人民币中文大写转金额
- 数字金额转中文大写
- innerText和innerHTML区别
- 点语法的注意项
- 黑马程序员_Java(网络编程)
- js 48 前端学习进度
- 初时OpenGL,OpenGL应用工具包GLUT的基本函数
- Java编写的金额转中文大写
- DL学习笔记【1】_运行CAFFE程序
- 成员变量的作用域
- VS2012编译安装ITK-4.7.2_支持Qt5.2.1
- Guid为空的判断
- 列变位法解密
- 焦点问题总结
- sealed trait Scala学习笔记-面向对象篇
- jQuery 操作DOM元素