1 package com.coxon.finance.tool;2

3 public classChinaNumber4 {5

6 private static String[] CH = { "", "", "拾", "佰", "仟", "万", "", "", "", "亿", "", "", "", "兆"};7

8 private static String[] CHS_NUMBER={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};9

10 /**11 * 传入数字金额字符串,返回数字金额对应的中文大字与读法12 *13 * @param money14 * 金额字符串15 * @return 金额中文大写16 */

17 public staticString 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 = newString[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 } else

117 {//当数字中有零时就在后加上零,如果超过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 } else

151 {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 } else

172 {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 } else

195 {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 } else

218 {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 } else

238 {//当数字中有零时就在后加上零,如果超过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 } else

272 {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 } else

293 {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 } else

315 {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 } else

337 {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 } else

361 {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 } else

386 {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 } else

407 {//当数字中有零时就在后加上零,如果超过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 //如果数字的位数大于16

423 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 } else

453 {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 } else

475 {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 } else

499 {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 } else

525 {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 } else

547 {//当数字中有零时就在后加上零,如果超过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 else

572 chs = chs + "元整";573 } else

574 {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 } else

586 {587 chs = chs + "元整";588 }589

590 returnchs;591 }592

593 public static voidmain(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 }

java 中文大写金额_java编写的金额转中文大写相关推荐

  1. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

  2. java 大写金额_java实现整数转化为中文大写金额的方法

    这篇文章主要介绍了java实现整数转化为中文大写金额的方法,感兴趣的小伙伴们可以参考一下 在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹&quo ...

  3. Java编写的金额转中文大写

    package com.b510.number2char;import java.math.BigDecimal;/*** 数字转换为汉语中人民币的大写*/ public class NumberTo ...

  4. java制造病毒_java编写病毒的可行性分析

    java编写病毒的可行性分析 最近心情十分郁闷,查阅一些病毒的资料消遣一下,居然发现这样的论调讲 java语言不可能编写病毒,在此特地反驳一下. 1 可执行 论调1:java需要依赖jre,无法在无j ...

  5. java分割汉字_Java分割中英文,并且中文不能分割一半?

    最近准备入其他坑位.在面试过程中,遇到下面这题笔试题,拿出来分享分享. 题目:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如"我A ...

  6. java工程编辑器中文乱码_Java Web开发项目中中文乱码解决方法汇总

    Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存 ...

  7. java 定时删除_Java编写定时删除文件程序

    Java编写定时删除文件程序 /*Java教程:http://www.javaweb.cc*/ import java.io.File; import java.util.Calendar; impo ...

  8. java dll 乱码_java调用c++ dll出现中文乱码 | 学步园

    最近的开发用到了使用java调用本机动态连接库的功能,将文件路径通过java调用C++代码对文件进行操作.在调用中如果路径中包含有中文字符就会出现问题,程序运行就会中止.下面用一个小例子,来说明记录下 ...

  9. java 中文 转义_java下载url路径包含中文需要转义的操作

    大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters a ...

最新文章

  1. matlab 时间序列模型稳定度检验
  2. CCF-CSP 201903-1 小中大(C++满分代码)
  3. java 验证码 插件_javaweb中验证码插件Kaptcha的使用
  4. mysql 异步_MySQL -- 异步I/O
  5. python读取csv文件_Hello,Python!小鲸教你Python之文件读取
  6. php get请求_JWT+PHP实现登录认证+令牌分发的修改
  7. 什么是排他思想算法?(源码解析)
  8. 摇号系统怎么做_雨水收集系统怎么做
  9. 报错:1130-host ... is not allowed to connect to this MySql server
  10. CentOS6和CentOS7进入单用户模式重置root密码
  11. 基于数码相机拍照图像分析的植被覆盖率(FVC)计算软件人品大家自己斟酌
  12. 如何免费将XPS转换为PDF格式
  13. 计算机简史:你想不通去脉 是因为你不了解来龙
  14. Amesim学习——弹球仿真
  15. matlab将图像油画,photoshop图像滤镜——油画算法(含matlab与C代码)
  16. Unity显示FPS帧数
  17. ubuntu20下使用微信开发者工具
  18. 第十二届“中国软件杯”大赛:A10-基于机器学习的分布式系统故障诊断系统——baseline(二)
  19. 苹果手机QQ扫正常二维码404
  20. 2016 Multi-University Training Contest 3 1010 Rower Bo

热门文章

  1. 推荐一个程序员必备官方 App ,名字叫:力扣
  2. 使用NPOI设置Excel表的单元格背景颜色
  3. 致广大而尽精微,极高明而道中庸
  4. 甲骨文数据库购买的价格(三)-附x86价格
  5. DLL简述,很有意思
  6. 提前期与计划展望期------(转)
  7. “知识共享”(CC)与开放教育资源(OER)之间的紧密关系
  8. [渝粤教育] 西南科技大学 建筑CAD 在线考试复习资料(1)
  9. 东北大学 数据库概论 第三章SQL 习题见解:Find all customers who have an account at all branches located in Brooklyn
  10. 【组合数学】递推方程 ( 递推方程解与特征根之间的关系定理 | 递推方程解的线性性质定理 | 递推方程解的形式 )