java 中文大写金额_java编写的金额转中文大写
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编写的金额转中文大写相关推荐
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...
- java 大写金额_java实现整数转化为中文大写金额的方法
这篇文章主要介绍了java实现整数转化为中文大写金额的方法,感兴趣的小伙伴们可以参考一下 在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹&quo ...
- Java编写的金额转中文大写
package com.b510.number2char;import java.math.BigDecimal;/*** 数字转换为汉语中人民币的大写*/ public class NumberTo ...
- java制造病毒_java编写病毒的可行性分析
java编写病毒的可行性分析 最近心情十分郁闷,查阅一些病毒的资料消遣一下,居然发现这样的论调讲 java语言不可能编写病毒,在此特地反驳一下. 1 可执行 论调1:java需要依赖jre,无法在无j ...
- java分割汉字_Java分割中英文,并且中文不能分割一半?
最近准备入其他坑位.在面试过程中,遇到下面这题笔试题,拿出来分享分享. 题目:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如"我A ...
- java工程编辑器中文乱码_Java Web开发项目中中文乱码解决方法汇总
Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存 ...
- java 定时删除_Java编写定时删除文件程序
Java编写定时删除文件程序 /*Java教程:http://www.javaweb.cc*/ import java.io.File; import java.util.Calendar; impo ...
- java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
最近的开发用到了使用java调用本机动态连接库的功能,将文件路径通过java调用C++代码对文件进行操作.在调用中如果路径中包含有中文字符就会出现问题,程序运行就会中止.下面用一个小例子,来说明记录下 ...
- java 中文 转义_java下载url路径包含中文需要转义的操作
大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters a ...
最新文章
- matlab 时间序列模型稳定度检验
- CCF-CSP 201903-1 小中大(C++满分代码)
- java 验证码 插件_javaweb中验证码插件Kaptcha的使用
- mysql 异步_MySQL -- 异步I/O
- python读取csv文件_Hello,Python!小鲸教你Python之文件读取
- php get请求_JWT+PHP实现登录认证+令牌分发的修改
- 什么是排他思想算法?(源码解析)
- 摇号系统怎么做_雨水收集系统怎么做
- 报错:1130-host ... is not allowed to connect to this MySql server
- CentOS6和CentOS7进入单用户模式重置root密码
- 基于数码相机拍照图像分析的植被覆盖率(FVC)计算软件人品大家自己斟酌
- 如何免费将XPS转换为PDF格式
- 计算机简史:你想不通去脉 是因为你不了解来龙
- Amesim学习——弹球仿真
- matlab将图像油画,photoshop图像滤镜——油画算法(含matlab与C代码)
- Unity显示FPS帧数
- ubuntu20下使用微信开发者工具
- 第十二届“中国软件杯”大赛:A10-基于机器学习的分布式系统故障诊断系统——baseline(二)
- 苹果手机QQ扫正常二维码404
- 2016 Multi-University Training Contest 3 1010 Rower Bo
热门文章
- 推荐一个程序员必备官方 App ,名字叫:力扣
- 使用NPOI设置Excel表的单元格背景颜色
- 致广大而尽精微,极高明而道中庸
- 甲骨文数据库购买的价格(三)-附x86价格
- DLL简述,很有意思
- 提前期与计划展望期------(转)
- “知识共享”(CC)与开放教育资源(OER)之间的紧密关系
- [渝粤教育] 西南科技大学 建筑CAD 在线考试复习资料(1)
- 东北大学 数据库概论 第三章SQL 习题见解:Find all customers who have an account at all branches located in Brooklyn
- 【组合数学】递推方程 ( 递推方程解与特征根之间的关系定理 | 递推方程解的线性性质定理 | 递推方程解的形式 )