`

数字人命币转换为大写

阅读更多
package com.study;

/**
* @description 记得有次去面试的时候,被问到将数字转化为人命币大写的题目,刚开始看到题目的时候觉得很容易,但是越看越觉得没有头绪;
*              今天在看C#的例子的时候,发现有用C#实现的实例,闲来无事,用Java也实现一下; 整数部分支持16位到万亿,
*              小数部分支持4位到毫,共计20位;
* @author xtayhame date 2020年10月21日
*
* @addr:huanghuagang.guangzhou
*/
public class ChinesNumber {
static String[] HB_UPPER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "扒", "玖" };
static String[] HB_JZ1 = { "仟", "佰", "拾", "" };
static String[] HB_JZ2 = { "", "万", "亿", "万亿" };
static String[] HB_JZ3 = { "角", "分", "厘", "毫" };

/**
* 将数字转换为大写
*
* @param val
* @return
*/
public static String toChinese(String money) {
String ret = "";
String[] monegArray = money.split("\\.");
String interGalNum = monegArray[0];
int unitLength = (interGalNum.length() + 3) / 4;

if (interGalNum.length() > 16) {
System.out.println("暂不支持超过16位整数的数字.");
return null;
}

String addStr = "";
String preStr = "";
for (int i = 0; i < unitLength; i++) {
String innerRet = "";
// 如果是第一次截取,可能是四位或者不够四位
if (i == 0) {
preStr = interGalNum.substring(addStr.length(), interGalNum.length() - (unitLength - 1) * 4);
} else {
// 从左到右分别获取四位数
preStr = interGalNum.substring(addStr.length(), addStr.length() + 4);
}

String newPreStr = "";
// 为方便处理,不足4位,补0
if (preStr.length() < 4) {
newPreStr = String.format("%04d", Integer.parseInt(preStr));
} else {
newPreStr = preStr;
}
String currUnit = HB_JZ2[unitLength - i - 1]; // 获取当前的HB_JZ2值
for (int j = 0; j < newPreStr.length(); j++) {
String num2 = String.valueOf(newPreStr.charAt(j));
if ("0".equals(num2)) {
continue;
}
innerRet = innerRet + HB_UPPER[Integer.parseInt(num2)] + HB_JZ1[j];
}
ret = ret + innerRet + " " + currUnit + " ";
addStr += preStr;
}

// 处理小数
if (monegArray.length == 2) {
String innerRet = "";
String decimalNum = monegArray[1];
// 小数最多只能是4位
if (decimalNum.length() > 4) {
decimalNum = decimalNum.substring(0, 4);
}

for (int i = 0; i < decimalNum.length(); i++) {
String num1 = String.valueOf(decimalNum.charAt(i));
innerRet = innerRet + HB_UPPER[Integer.parseInt(num1)] + HB_JZ3[i];
}
ret = ret + innerRet;
}

return ret;
}

public static void main(String[] args) {
String a = "1234567891234567.6789";
System.out.println(ChinesNumber.toChinese(a));
}
}
分享到:
评论

相关推荐

    纯java读取人命币工具类

    本资源为纯手工代码,下载便可使用。读取人命币的纯工具类。简单好用,便于理解。支持原创

    国际海上人命安全公约.doc

    国际海上人命安全公约.doc

    SOLAS规范(2014)英文版.pdf

    海上人命安全公约 2014 英文原版,.......................................................

    安川_W1000系列产品样本.pdf

    从原有产品可以自动转换参数的驱动转换功能,当交换变频器 时,或万一发生故障需要交换变频器时,可以省去参数设定的 作业。 4). 配备USB口,可以和电脑简单连接。   本产品可用于一般工业用三相交流电机的调速控制...

    海事应急辅助指挥系统.doc

    海事应急辅助指挥系统是一个系统工程,范围上覆盖中国MRCC、各MRCC(MRSC),技术上涉及到网络...利用海上落水人员漂移等数学模型,初步建立以实现人命救助的辅助指挥、应急预案的应用管理为重点海事应急辅助指挥系统。

    vc++ 优化体积

    我没走眼吧,就一Hello World就160kb真是要人命啊! 呵呵!上面的情况是笔者所遭遇的情况.不过后来了解vc可以通过设置参数来自定义编译方式.为什么文件那么大!主要是编译器加入了很多没必要的代码(这里是对我们而言,...

    基于单片机的空气质量检测系统设计

    有关雾霾的重大事件层出不穷,如1952年伦敦烟雾事件,伦敦杀人雾在四天内夺走了4000多条人命;还有2013年初北京肆虐横行的雾霾事件,轰动一时。因此,对PM2.5的测量显得越来越重要。本设计采用STC89C51单片机为控制...

    论文研究 - 基于效用曲线的地震间接损失评估

    诸如人命之类的无形资产可能属于间接损失。 在本文中,我们提出了一个模型来计算社会为挽救生命而愿意付出的投资价值。 为此,我们分析了个人和社会问题。 但是,对个别问题给予特殊对待,在该问题上,人的生命价值...

    第三集 选择性偏差.mp4

    合法饮酒会要人命吗?如果您想弄清复杂世界中的因果关系,那么计量经济学就是您想要的。 你是否认为计量经济学很无聊?过去是这样,将来再也不会这样了!我们跳过了理论上的单调乏味,用实际的经验问题使数字生动起来...

    机器人科普小知识.docx

    而在工业革命时期,可以用火药炸山,之后再人力挖矿,这种工作充满了危险性,在工业技术不发达的时代,各种矿物的产量都是拿人命堆出来的,许许多多的人都死在了挖矿的途中。而在技术信息都发达的现在,各种成出不穷...

    机器人科普小知识(1).docx

    而在工业革命时期,可以用火药炸山,之后再人力挖矿,这种工作充满了危险性,在工业技术不发达的时代,各种矿物的产量都是拿人命堆出来的,许许多多的人都死在了挖矿的途中。而在技术信息都发达的现在,各种成出不穷...

    富士-样本 配电机器 BS系列.pdf

    2Hz~13.2Hz、位移为±1mm及频率为13.2Hz~100Hz、加速 度为±0.7g的机械振动;  • 隔离开关主电路安装类别为Ⅲ,其余辅助电路、控制电路安 装类别为Ⅱ;  • 隔离开关适用于电磁环境A;  • 隔离开关应安装在无...

    SOLAS 2009, 英文版,无水印密码

    1974年国际海上人命安全公约(SOLAS)综合文本(2009),英文版,IMO版

    机器人科普小知识(2).docx

    而在工业革命时期,可以用火药炸山,之后再人力挖矿,这种工作充满了危险性,在工业技术不发达的时代,各种矿物的产量都是拿人命堆出来的,许许多多的人都死在了挖矿的途中。而在技术信息都发达的现在,各种成出不穷...

    201年人民日报标注语料

    这个人命日报语料还不错,用作学习建模十分好。 在做crf建模的时候建议加上自己制作的语料 加强语料里面的识别特征

    SOLAS文档19.2版本

    SOLAS 公约是涉及海上人命安全的各种国际公约中最重要的一个公约,它与 MARPOL、STCW 等一起组成了船舶安全管理的基础。这是19.2版本

    船舶结构防火的检验要求

    船舶结构的各项防火检验要求——《1974年国际海上人命安全公约》(SOLAS 74)第Ⅱ-2章和船舶检验规范的规定,船舶结构防火的要求主要体现的几个方面

    程序文件-IQC进料检验程序.pdf

    2) 使用产品时对人命及财产有害无利或根据经验本公司的品质经验预想的缺陷。 4.2 重缺陷(MA) 1) 由外观及构造上缺陷,而大大降低产品的商品价值的缺陷。 2) 产品未达到指定的规格,因此原先的性能在不安的状态...

Global site tag (gtag.js) - Google Analytics