Java实现“将数字金额转为大写中文金额”

更新时间:2023-07-26 19:34:06 阅读: 评论:0

Java实现“将数字⾦额转为⼤写中⽂⾦额”
前⾔:
输⼊数字⾦额参数,运⾏程序得到其对应的⼤写中⽂⾦额;例如:输⼊ 12.56,输出 12.56 : 壹拾贰元伍⾓陆分;重点来了:本⼈亲测有效。
奉上代码:
/**
* @Title: ConvertUpMoney
* @Description:  将数字⾦额转换为⼤写中⽂⾦额
* @date: 2019年6⽉18⽇ 下午10:52:27
*/
public class ConvertUpMoney {
宴席菜谱
// ⼤写数字
private static final String[] NUMBERS = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 整数部分的单位
private static final String[] IUNIT = {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
// ⼩数部分的单位
private static final String[] DUNIT = {"⾓","分","厘"};
/**
*  转换为⼤写的中⽂⾦额
* @param str 字符串类型的 ⾦额数字
* @return
*/
public static String toChine(String str) {
15英文怎么读
// 判断输⼊的⾦额字符串是否符合要求
if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {
return "抱歉,请输⼊数字!";
其中造句
}
if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {
return "零元";
}
// 判断⾦额数字中是否存在负号"-"
boolean flag = fal;
if(str.startsWith("-")){
// 标志位,标志此⾦额数字为负数
flag = true;
str = placeAll("-", "");
}
// 去掉⾦额数字中的逗号","
str = placeAll(",", "");
String integerStr;//整数部分数字
String decimalStr;//⼩数部分数字
// 初始化:分离整数部分和⼩数部分
if(str.indexOf(".")>0) {
integerStr = str.substring(0,str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
}el if(str.indexOf(".")==0) {
integerStr = "";
decimalStr = str.substring(1);
}el {
integerStr = str;
decimalStr = "";
}
// beyond超出计算能⼒,直接返回
if(integerStr.length()>IUNIT.length) {
return "超出计算能⼒!";
}
/
/ 整数部分数字
int[] integers = toIntArray(integerStr);
// 判断整数部分是否存在输⼊012的情况
if (integers.length>1 && integers[0] == 0) {
return "抱歉,输⼊数字不符合要求!";
}
大三总结// 设置万单位
boolean isWan = isWan5(integerStr);
// ⼩数部分数字
int[] decimals = toIntArray(decimalStr);
// 返回最终的⼤写⾦额
String result = getChineInteger(integers, isWan) + getChineDecimal(decimals);        if(flag){
// 如果是负数,加上"负"
return "负" + result;
}el{
return result;
}
}
/**
*  将字符串转为int数组
* @param number  数字
* @return
*/
private static int[] toIntArray(String number) {
int[] array = new int[number.length()];
for(int i = 0;i<number.length();i++) {
array[i] = Integer.parInt(number.substring(i,i+1));
}
return array;
}
/**
*  将整数部分转为⼤写的⾦额
* @param integers 整数部分数字
* @param isWan  整数部分是否已经是达到【万】
* @return
*/
public static String getChineInteger(int[] integers,boolean isWan) {
宝宝嘴巴臭
StringBuffer chineInteger = new StringBuffer("");
int length = integers.length;
if (length == 1 && integers[0] == 0) {
for(int i=0; i<length; i++) {
String key = "";
if(integers[i] == 0) {
if((length - i) == 13)//万(亿)
key = IUNIT[4];
el if((length - i) == 9) {//亿
key = IUNIT[8];
}el if((length - i) == 5 && isWan) {//万
key = IUNIT[4];
}el if((length - i) == 1) {//元
key = IUNIT[0];
}
if((length - i)>1 && integers[i+1]!=0) {
key += NUMBERS[0];
}
}
chineInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));        }
String();
}
/**
*  将⼩数部分转为⼤写的⾦额
京桥大学* @param decimals ⼩数部分的数字
* @return
*/
private static String getChineDecimal(int[] decimals) {
StringBuffer chineDecimal = new StringBuffer("");
for(int i = 0;i<decimals.length;i++) {
if(i == 3) {
break;
}
chineDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));
}
String();
}
/**
*  判断当前整数部分是否已经是达到【万】
* @param integerStr  整数部分数字
遗迹化石
* @return
*/
private static boolean isWan5(String integerStr) {
int length = integerStr.length();
if(length > 4) {
String subInteger = "";
if(length > 8) {
subInteger = integerStr.substring(length- 8,length -4);
}el {
subInteger = integerStr.substring(0,length - 4);
}
return Integer.parInt(subInteger) > 0;
}el {
}
// Test
public static void main(String[] args) {
String number = "12.56";
System.out.println(number+": "+Chine(number));
number = "1234567890563886.123";
System.out.println(number+": "+Chine(number));
number = "1600";
System.out.println(number+": "+Chine(number));
number = "156,0";
System.out.println(number+": "+Chine(number));
number = "-156,0";
System.out.println(number+": "+Chine(number));
三国演义的观后感
number = "0.12";
System.out.println(number+": "+Chine(number));
number = "0.0";
System.out.println(number+": "+Chine(number));
number = "01.12";
System.out.println(number+": "+Chine(number));
number = "0125";
System.out.println(number+": "+Chine(number));
number = "-0125";
System.out.println(number+": "+Chine(number));
number = "sdw5655";
System.out.println(number+": "+Chine(number));
System.out.println(null+": "+Chine(null));
}
}

本文发布于:2023-07-26 19:34:06,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1097757.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:部分   数字   整数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图