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));
}
}
分享到:
相关推荐
本资源为纯手工代码,下载便可使用。读取人命币的纯工具类。简单好用,便于理解。支持原创
国际海上人命安全公约.doc
本文档详细介绍了名为PE-Expert3PEV板(MWPE3-PEV)的硬件参考,这是一种专为电力电子应用设计的数字控制平台。 首先,文档中列出了若干重要的注意事项。这些注意事项强调了用户在使用和理解该手册和产品时应遵循的...
修正案被广泛接受并生效的流程是,当修正案被足够数量的缔约方接受后(通常为三分之二),它们将在六个月后对所有缔约方生效。这意味着缔约方需按照国际公约规定的时间表更新本国法规和船舶标准,以确保与国际标准...
在伺服系统中,变频器可以将固定频率的交流电转换为可变频率的交流电,从而控制电机的运行。 伺服系统是一种能够精确控制电机运动的系统。它通过接收外部的控制信号,将信号转换为电机的运动指令,从而控制电机的...
从原有产品可以自动转换参数的驱动转换功能,当交换变频器 时,或万一发生故障需要交换变频器时,可以省去参数设定的 作业。 4). 配备USB口,可以和电脑简单连接。 本产品可用于一般工业用三相交流电机的调速控制...
无线电通信在船舶安全中扮演着至关重要的角色,自100多年前首次在船上应用以来,其主要目标已从商业信息传输转变为保障海上人命和财产安全。船舶通信技术的发展经历了从早期的摩尔斯电报到现代的数字化、自动化的...
该规则的目的是为经修正的《1974年国际海上人命安全公约》第II-2章所要求的消防安全系统提供具体工程规范的国际标准。本规则对于经修正的《1974年国际海上人命安全公约》所要求的消防安全系统将具有强制性。 定义 ...
主操舵装置的设计要求极为严格,它必须在任何一台动力设备故障的情况下仍然能够保持正常工作,确保舵的转动角度满足35°至35°的快速转换要求,这一过程的时间不得超过28秒。 同时,辅助操舵装置则被要求在应急情况...
AIS(Automatic Identification System)系统是一种基于信息技术的船舶识别、监视和通信系统,它利用卫星定位技术、数字通信技术和信息处理技术,旨在提高海上交通安全、效率和环境保护。AIS系统克服了传统船舶避碰...
电子海图系统(ECDIS,Electronic Chart Display and Information System)是现代航海技术的一大革新,它结合了先进的计算机技术和数字化海图数据,为船舶驾驶员提供了一种高效、准确的导航工具。ECDIS的出现应对了...
碳水化物)供能,因为碳水化合物在体内可以转化为葡萄糖,为大脑提供必要的能量。 3. 河豚毒素:河豚鱼的毒性主要集中在内脏(B.内脏)和皮肤(D.皮肤),肌肉部分相对毒性较小,但仍需谨慎处理。 4. 砷中毒检测:...
IMSBC规则,全称为《国际海运固体散装货物规则》(International Maritime Solid Bulk Cargoes Code),是全球海运行业中用于规范和确保固体散装货物安全运输的重要法规。该规则的制定与生效旨在防止因不当装载、积载...
为了应对这一挑战,国际海事组织(IMO)制定了一系列严格的消防安全规则,旨在确保海上人命安全,提升船舶应对火灾的能力。《国际消防安全系统规则》便是在此背景下出台的重要国际法规,它不仅为船舶消防安全系统的...
当下微博已经成为各个年龄段网友冲浪的重要平台之一,许多影视明星、大V网红、官方代表也纷纷入驻微博这一平台.在此背景下,微博已经成为众多粉丝获取爱豆近况、爱豆自拍、和爱豆互动的有效平台之一,于是获取爱豆的...
海事应急辅助指挥系统是一个系统工程,范围上覆盖中国MRCC、各MRCC(MRSC),技术上涉及到网络...利用海上落水人员漂移等数学模型,初步建立以实现人命救助的辅助指挥、应急预案的应用管理为重点海事应急辅助指挥系统。
数据处理是指对监测数据的处理,包括数据清洁、数据转换和数据分析等。数据分析是指对监测数据的分析,包括数据 Mining 和数据挖掘等。 在通信系统中,介绍了通信系统的组成部分和通信协议。通信系统包括数据传输和...
不过,我们可以假设这是关于海难发生后,人员生存几率的统计数据,并以这个假设为基础来讨论相关知识点。 首先,海难生存几率统计主要关注的是在海上灾难发生时,船舶遇险人员能够生还的概率。这个统计数字对于海事...
用户需注意型号中的"□"代表小数点或数字,"*"则代表字母或无标记。当型号中的**2表示与各种上位接口相匹配的伺服电机,使得该系统成为实现机械最佳运行控制的AC伺服系统。需要注意的是,部分功率小于0.75kW的GYB、...