「java数字转换成大写」java数字转换成大写金额

博主:adminadmin 2023-01-05 20:33:09 689

今天给各位分享java数字转换成大写的知识,其中也会对java数字转换成大写金额进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 数字转大写汉字

java 数字转大写汉字的完整例子,请参考:

package com.sitinspring;

import java.math.BigDecimal;

import java.util.Hashtable;

import java.util.Map;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* 将阿拉伯数字转换成汉语大写数字

* @author sitinspring

* @date 2008-03-25

*/

public class ChineseUpperCaser{

/**

* 用于存储整数部分

*/

private String integerPart;

/**

* 用于存储小数部分

*/

private String floatPart;

/**

* 用于存储0-9大写的哈希表

*/

private static final MapString,String ZerotoNineHt;

/**

* 用于存储十百千大写的哈希表

*/

private static final MapInteger,String thHuTenHt;

/**

* 用于存储万亿兆大写的哈希表

*/

private static final MapInteger,String wanYiZhaoHt;

static{

ZerotoNineHt=new HashtableString,String();

ZerotoNineHt.put("0", "零");

ZerotoNineHt.put("1", "壹");

ZerotoNineHt.put("2", "贰");

ZerotoNineHt.put("3", "叁");

ZerotoNineHt.put("4", "肆");

ZerotoNineHt.put("5", "伍");

ZerotoNineHt.put("6", "陆");

ZerotoNineHt.put("7", "柒");

ZerotoNineHt.put("8", "捌");

ZerotoNineHt.put("9", "玖");

thHuTenHt=new HashtableInteger,String();

thHuTenHt.put(0, "");

thHuTenHt.put(1, "拾");

thHuTenHt.put(2, "佰");

thHuTenHt.put(3, "仟");

wanYiZhaoHt=new HashtableInteger,String();

wanYiZhaoHt.put(0, "");

wanYiZhaoHt.put(1, "万");

wanYiZhaoHt.put(2, "亿");

wanYiZhaoHt.put(3, "兆");

}

private static String getWanYiZhao(int level){

String retval="";

do{

retval+=wanYiZhaoHt.get(level % 4);

level-=3;

}while(level3);

return retval;

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(float number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(double number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(int number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(long number) throws NumberFormatException{

this(String.valueOf(number));

}

/**

* 构造函数

* @param number

* @throws NumberFormatException

*/

public ChineseUpperCaser(String number) throws NumberFormatException{

String formalNumber=formatNumber(number);

// 辟分以给整数部分和小数部分赋值

String[] arr=formalNumber.split("[.]");

if(arr.length==2){

// 有小数点

integerPart=arr[0];

floatPart=arr[1];

}

else{

// 无小数点

integerPart=arr[0];

}

}

public String toString(){

String retval="";

if(integerPart!=null){

retval+=parseIntegerPart();

}

if(floatPart!=null){

retval+=parseFloatPart();

}

else{

retval+="整";

}

return retval;

}

/**

* 得到整数部分的汉字大写表示

* @return

*/

private String parseIntegerPart(){

String retval="";

// 将整数部分逆序,因为需要反向读取

String reverseIntegerPart="";

for(int i=integerPart.length()-1;i-1;i--){

reverseIntegerPart+=integerPart.charAt(i);

}

// 将整数部分按四位分段

Pattern p = Pattern.compile("\\d{4}",Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(reverseIntegerPart);

StringBuffer sb = new StringBuffer();

boolean result = m.find();

while (result) {

// 每找到四位放一个逗号

m.appendReplacement(sb, m.group(0) + ",");

result = m.find();

}

m.appendTail(sb);

// 按逗号劈分,得到四位分组数据的数组

String[] arr=sb.toString().split(",");

int j;

String str;

for(int i=arr.length-1;i=0;i--){

String temp=arr[i];

// 阿拉伯数字转大写汉字加单位(千百十)

for(j=temp.length()-1;j=0;j--){

str=String.valueOf(temp.charAt(j));

retval+=ZerotoNineHt.get(str)+thHuTenHt.get(j);

}

retval=retval.replaceAll("(零)($)", "$2");// 零在末尾则去掉

// 加单位(兆亿万)

retval+=getWanYiZhao(i);

}

// 零替换

retval=retval.replaceAll("(零[仟佰拾])", "零");

retval=retval.replaceAll("(零{2,})", "零");

retval=retval.replaceAll("(零)($)", "$2");// 零在末尾则去掉

return retval;

}

/**

* 得到小数部分的汉字大写表示

* @return

*/

private String parseFloatPart(){

String retval="点";

for(int i=0;ifloatPart.length();i++){

String temp=String.valueOf(floatPart.charAt(i));

retval+=ZerotoNineHt.get(temp);

}

return retval;

}

/**

* 对输入的字符串进行验证,如果不能转化为数字形式则抛出数字转化异常

* ,注意这是一个运行时异常(非检查型异常),程序不用显式捕获

* @param number

* @throws NumberFormatException

*/

private String formatNumber(String number) throws NumberFormatException{

return (new BigDecimal(number)).toString();

}

public static void main(String[] args){

String[] arr={"1.543524304302432","12.432423432","123.454235","1234","12345","123456","1234567",

"12345678","123456789","1234567891","12345678912","123456789123","1234567891234","12345678912345",

"123456789123456","1234567891234567","12345678912345678","123456789123456789",

"123456789123456789123456089123456789123456789123450780","0","00","000","0000","01","001","0001",

"00001","10","100","1000","10000","101","1001","10001","100001","1.23","21.234","243400031.233234",

"5400035.980","543.6545"};

//String[] arr={"0","00","000","0000","01","001","0001","00001","10","100","1000","10000","101","1001","10001","100001"};

//String[] arr={"1.23","21.234","243400031.233234","5400035.980","543.6545"};

for(String str:arr){

System.out.println("阿拉伯数字等于:"+str+" 大写汉字等于:"+new ChineseUpperCaser(str));

}

}

}

java中怎么把数字转换大写数字

package com.heyang; /** * 将10亿以内的阿拉伯数字转成汉字大写形式 * @author xizhenyin * */ public class CnUpperCaser { // 整数部分 private String integerPart; // 小数部分 private String floatPart; // 将数字转化为汉字的数组,因为...

Java将控制台输入的人民币数字金额转化为大写

代码如下:

/**

* 人民币转成大写

*

* @param value

* @return String

*/

public static String hangeToBig(double value)

{

char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示

char[] vunit = { '万', '亿' }; // 段名表示

char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示

long midVal = (long) (value * 100); // 转化成整形

String valStr = String.valueOf(midVal); // 转化成字符串

String head = valStr.substring(0, valStr.length() - 2); // 取整数部分

String rail = valStr.substring(valStr.length() - 2); // 取小数部分

String prefix = ""; // 整数部分转化的结果

String suffix = ""; // 小数部分转化的结果

// 处理小数点后面的数

if (rail.equals("00"))

{ // 如果小数部分为0

suffix = "整";

}

else

{

suffix = digit[rail.charAt(0) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来

}

// 处理小数点前面的数

char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组

char zero = '0'; // 标志'0'表示出现过0

byte zeroSerNum = 0; // 连续出现0的次数

for (int i = 0; i chDig.length; i++)

{ // 循环处理每个数字

int idx = (chDig.length - i - 1) % 4; // 取段内位置

int vidx = (chDig.length - i - 1) / 4; // 取段位置

if (chDig[i] == '0')

{ // 如果当前字符是0

zeroSerNum++; // 连续0次数递增

if (zero == '0')

{ // 标志

zero = digit[0];

}

else if (idx == 0 vidx 0 zeroSerNum 4)

{

prefix += vunit[vidx - 1];

zero = '0';

}

continue;

}

zeroSerNum = 0; // 连续0次数清零

if (zero != '0')

{ // 如果标志不为0,则加上,例如万,亿什么的

prefix += zero;

zero = '0';

}

prefix += digit[chDig[i] - '0']; // 转化该数字表示

if (idx 0)

prefix += hunit[idx - 1];

if (idx == 0 vidx 0)

{

prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿

}

}

if (prefix.length() 0)

prefix += '圆'; // 如果整数部分存在,则有圆的字样

return prefix + suffix; // 返回正确表示

}

用JAVA如何把小写数字变成大写

我以前用的人名币大小写转换,你改改应该就可以了:

public class Test6 {

static final String zhnum_0 = "零壹贰叁肆伍陆柒捌玖";

static final String zhnum = "零一二三四五六七八九";

static final String[] zhnum1 = { "", "十", "百", "千" };

static final String[] zhnum1_0 = { "", "拾", "佰", "仟" };

static final String[] zhnum2 = { "", "万", "亿", "万亿", "亿亿" };

public Test6() {

}

private static String numberToZH4(String s, boolean fan) {

StringBuffer sb = new StringBuffer();

if (s.length() != 4)

return null;

for (int i = 0; i 4; i++) {

char c1 = s.charAt(i);

if (c1 == '0' i 1 s.charAt(i - 1) == '0')

continue;

if (c1 != '0' i 1 s.charAt(i - 1) == '0')

sb.append('零');

if (c1 != '0') {

if (fan) {

sb.append(zhnum_0.charAt(c1 - 48));

sb.append(zhnum1_0[4 - i - 1]);

} else {

sb.append(zhnum.charAt(c1 - 48));

sb.append(zhnum1[4 - i - 1]);

}

}

}

return new String(sb);

}

public static String numberToZH(long n, boolean fan) {

StringBuffer sb = new StringBuffer();

String strN = "000" + n;

int strN_L = strN.length() / 4;

strN = strN.substring(strN.length() - strN_L * 4);

for (int i = 0; i strN_L; i++) {

String s1 = strN.substring(i * 4, i * 4 + 4);

String s2 = numberToZH4(s1, fan);

sb.append(s2);

if (s2.length() != 0)

sb.append(zhnum2[strN_L - i - 1]);

}

String s = new String(sb);

if (s.length() != 0 s.startsWith("零"))

s = s.substring(1);

return s;

}

public static String numberToZH(double d, boolean fan) {

return numberToZH("" + d, fan);

}

public static String numberToZH(String str, boolean fan) {

StringBuffer sb = new StringBuffer();

int dot = str.indexOf(".");

if (dot 0)

dot = str.length();

String zhengshu = str.substring(0, dot);

sb.append(numberToZH(Long.parseLong(zhengshu), fan));

if (dot != str.length()) {

sb.append("点");

String xiaoshu = str.substring(dot + 1);

for (int i = 0; i xiaoshu.length(); i++) {

if (fan) {

sb.append(zhnum_0.charAt(Integer.parseInt(xiaoshu

.substring(i, i + 1))));

} else {

sb.append(zhnum.charAt(Integer.parseInt(xiaoshu.substring(

i, i + 1))));

}

}

}

String s = new String(sb);

if (s.startsWith("零"))

s = s.substring(1);

if (s.startsWith("一十"))

s = s.substring(1);

while (s.endsWith("零")) {

s = s.substring(0, s.length() - 1);

}

if (s.endsWith("点"))

s = s.substring(0, s.length() - 1);

return s;

}

public static String numberToRMB(double rmb) {

String strRMB = "" + rmb;

DecimalFormat nf = new DecimalFormat("#.#");

nf.setMaximumFractionDigits(2);

strRMB = nf.format(rmb).toString();

strRMB = numberToZH(strRMB, true);

if (strRMB.indexOf("点") = 0) {

strRMB = strRMB + "零";

strRMB = strRMB.replaceAll("点", "圆");

String s1 = strRMB.substring(0, strRMB.indexOf("圆") + 1);

String s2 = strRMB.substring(strRMB.indexOf("圆") + 1);

strRMB = s1 + s2.charAt(0) + "角" + s2.charAt(1) + "分整";

} else {

strRMB = strRMB + "圆整";

}

return "人民币(大写):" + strRMB;

}

public static void main(String[] args) {

System.out.println(numberToRMB(342345.96));

System.out.println(numberToRMB(123));

}

}

java如何将数字转为中文大写

import org.apache.commons.lang3.StringUtils;

/**

* @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 toChinese(String str) {

// 判断输入的金额字符串是否符合要求

if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {

return "抱歉,请输入数字!";

}

if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {

return "零元";

}

// 判断金额数字中是否存在负号"-"

boolean flag = false;

if(str.startsWith("-")){

// 标志位,标志此金额数字为负数

flag = true;

str = str.replaceAll("-", "");

}

// 去掉金额数字中的逗号","

str = str.replaceAll(",", "");

String integerStr;//整数部分数字

String decimalStr;//小数部分数字

// 初始化:分离整数部分和小数部分

if(str.indexOf(".")0) {

integerStr = str.substring(0,str.indexOf("."));

decimalStr = str.substring(str.indexOf(".") + 1);

}else if(str.indexOf(".")==0) {

integerStr = "";

decimalStr = str.substring(1);

}else {

integerStr = str;

decimalStr = "";

}

// beyond超出计算能力,直接返回

if(integerStr.length()IUNIT.length) {

return "超出计算能力!";

}

// 整数部分数字

int[] integers = toIntArray(integerStr);

// 判断整数部分是否存在输入012的情况

if (integers.length1 integers[0] == 0) {

return "抱歉,输入数字不符合要求!";

}

// 设置万单位

boolean isWan = isWan5(integerStr);

// 小数部分数字

int[] decimals = toIntArray(decimalStr);

// 返回最终的大写金额

String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);

if(flag){

// 如果是负数,加上"负"

return "负" + result;

}else{

return result;

}

}

/**

* 将字符串转为int数组

* @param number 数字

* @return

*/

private static int[] toIntArray(String number) {

int[] array = new int[number.length()];

for(int i = 0;inumber.length();i++) {

array[i] = Integer.parseInt(number.substring(i,i+1));

}

return array;

}

/**

* 将整数部分转为大写的金额

* @param integers 整数部分数字

* @param isWan 整数部分是否已经是达到【万】

* @return

*/

public static String getChineseInteger(int[] integers,boolean isWan) {

StringBuffer chineseInteger = new StringBuffer("");

int length = integers.length;

if (length == 1 integers[0] == 0) {

return "";

}

for(int i=0; ilength; i++) {

String key = "";

if(integers[i] == 0) {

if((length - i) == 13)//万(亿)

key = IUNIT[4];

else if((length - i) == 9) {//亿

key = IUNIT[8];

}else if((length - i) == 5 isWan) {//万

key = IUNIT[4];

}else if((length - i) == 1) {//元

key = IUNIT[0];

}

if((length - i)1 integers[i+1]!=0) {

key += NUMBERS[0];

}

}

chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));

}

return chineseInteger.toString();

}

/**

* 将小数部分转为大写的金额

* @param decimals 小数部分的数字

* @return

*/

private static String getChineseDecimal(int[] decimals) {

StringBuffer chineseDecimal = new StringBuffer("");

for(int i = 0;idecimals.length;i++) {

if(i == 3) {

break;

}

chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));

}

return chineseDecimal.toString();

}

/**

* 判断当前整数部分是否已经是达到【万】

* @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);

}else {

subInteger = integerStr.substring(0,length - 4);

}

return Integer.parseInt(subInteger) 0;

}else {

return false;

}

}

// Test

public static void main(String[] args) {

String number = "12.56";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1234567890563886.123";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1600";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "156,0";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-156,0";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.12";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.0";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "01.12";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0125";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-0125";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "sdw5655";

System.out.println(number+": "+ConvertUpMoney.toChinese(number));

System.out.println(null+": "+ConvertUpMoney.toChinese(null));

}

}

java数字转换成大写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java数字转换成大写金额、java数字转换成大写的信息别忘了在本站进行查找喔。