数字金额转大写金额 工具类
数字金额转大写金额 工具类
代码如下:
/** 金额转为汉字大写* @return* @throws* @author TomatoYan*/
public class NumberToCN {/*汉字中数字大写*/public static final String[] CN_UPPER_NUMBER_HEAD = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};public static final String[] CN_UPPER_NUMBER_COUNT = {"","元","元","元","","万元","万元","万元","","亿元","亿元","亿元"};/*汉字中小数点后的大写*/public static final String[] CN_UPPER_NUMBER_TAIL = {"分", "角"};/*汉字单位大写*/public static final String[] CN_UPPER_MONEY_UNIT = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};/*特殊字符:整*/public static final String CN_FULL = "整";/*特殊字符:零元整*/public static final String CN_ZERO_FULL = "零元" + CN_FULL;/*将输入的金额转换为对应的汉字大写*/public String changeAmtToCN(String amtStr) {String loanAmt = CN_ZERO_FULL;if (Double.parseDouble(amtStr) != 0) {String[] amtArr = amtStr.split("\\.");if (amtArr.length > 1) {String amtHead = amtArr[0];String amtTail = amtArr[1];loanAmt = Double.parseDouble(amtTail) == 0 ? (changeAmtHeadToCN(amtHead) + CN_FULL) : (changeAmtHeadToCN(amtHead) + changeAmtTailToCN(amtTail));} else {String amtHead = amtArr[0];loanAmt = changeAmtHeadToCN(amtHead) + CN_FULL;}}return loanAmt;}/*小数点前*/public String changeAmtHeadToCN(String headStr) {StringBuffer sb = new StringBuffer();Double head = Double.parseDouble(headStr);int count = 0;boolean flag = true;for (int i = 0; i < headStr.length(); i++) {int x = (int) (head % 10);if(x==0&&flag) {count++;head = head / 10;}else{flag=false;sb.append(CN_UPPER_NUMBER_HEAD[i]);sb.append(CN_UPPER_MONEY_UNIT[x]);head = head / 10;}}return count == 0?sb.reverse().toString():sb.reverse().append(CN_UPPER_NUMBER_COUNT[count]).toString();}/*小数点后*/public String changeAmtTailToCN(String tailStr) {StringBuffer sb = new StringBuffer();int tail = Integer.parseInt(tailStr);for (int i = 0; i < tailStr.length(); i++) {int x = tail % 10;sb.append(CN_UPPER_NUMBER_TAIL[i]);sb.append(CN_UPPER_MONEY_UNIT[x]);tail = tail / 10;}return sb.reverse().toString();}public static void main(String[] args) {String strArr[] = {"1","10","100","1000","10000","100000","1000000","10000000","100000000","1000000000","10000000000","100000000000"};for (String str :strArr) {System.out.println(str+","+new NumberToCN().changeAmtToCN(str));}}
}
由于是用数组来控制位数的所以最大支持壹仟亿,由于int值最多为2^32所以,使用了Double来做存储。
数字金额转大写金额 工具类相关推荐
- 金额大小写转换工具类
/***金额大小写转换工具类*/public class MoneyUtil {/** 大写数字 */private static final String[] NUMBERS = { "零 ...
- java中bitconverter_【Java】BitConverter(数字转字节数组工具类)
import java.nio.ByteOrder; import java.nio.charset.Charset; /** * 数字转字节数组工具类 */ public class BitConv ...
- 财务转换工具 - 人民币金额转大写工具类 java 版本
文章目录 财务转换工具 - 人民币金额转大写工具类 java 版本 1.示例 2.代码 财务转换工具 - 人民币金额转大写工具类 java 版本 1.示例 public static void mai ...
- 数字金额转化大写金额
/*** 数字金额转化大写金额* @param val string/number(字符串可包含'¥'和多余的0)* @returns {*}* 原生方法*///代码如下所示:function con ...
- JQuery 数字金额转换为大写金额
web JQuery 数字金额转换为大写金额 网址:https://blog.csdn.net/qq_36894527/article/details/80675658 function Arabia ...
- PHP数字金额转换大写金额(20191122再次修改版)
今天在博客园看到有文章在讲"PHP数字金额转换大写金额", 于是我抽时间也写了一个. 不多说, 把代码发上来: /*** 将数值金额转换为中文大写金额* @param $amoun ...
- WPF TextBox 允许输入数字及字母的工具类
目录 WPF TextBox 允许输入数字及字母的工具类 工具代码 如何使用 WPF TextBox 允许输入数字及字母的工具类 WPF TextBox 仅允许数字.数字及小数点.字母及数字等进行输入 ...
- java中数字格式金额转换成中文大写金额工具类
/*** 金额转换工具类*/ public class MoneyUtils {private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分&quo ...
- (后端)Java中关于金额大小写的工具类
/*** 金额小数转换成中文大写金额* * @author Neil Han* */private static final String UNIT[] = { "万", &quo ...
最新文章
- Hadoop安装教程_分布式集群
- 网上教育能改变教育不公平的现状吗?
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
- python 会议室预约系统解决方案_令令开门智能会议室预约系统解决方案
- nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化
- 报告解读下载 | 中国软件根技术发展白皮书之数据库
- javascript 函数初探 (六)--- 闭包初探#4
- php jwt payload,php实现JWT(json web token)鉴权实例详解
- .net core 缓存技术 、内存缓存 本人亲测
- linux系统Kile+Okular实现逆向搜索
- 华为微型计算机,8英寸华为平板M5青春版今日发布
- 笔记本nc10装linux,三星nc10笔记本如何设置U盘启动
- 【网络安全】如何限制内网网速
- JavaWeb 简易留言系统
- oracle脏读查询,没有进行commit操作的数据是否能被查询到,关于oracle的脏读和隔离级别...
- 研究生初试录取系统C语言,研究生初试录取管理系统
- 《生物化学与分子生物学》----蛋白质----听课笔记(五)
- JAVA 图片地址路径转换 Base64 工具类
- Flutter v1,大厂面试必问
- Robotstudio软件:机床上下料工作站机器人示教编程