「java数字转大写」Java转大写

博主:adminadmin 2022-12-29 23:12:11 967

本篇文章给大家谈谈java数字转大写,以及Java转大写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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将控制台输入的人民币数字金额转化为大写

代码如下:

/**

* 人民币转成大写

*

* @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 数字转大写汉字

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数字大小写转换

给你段代码参考:

public class NumToChinese {

public static String NumberToChinese(String input){

String s1="零壹贰叁肆伍陆柒捌玖";

String s4="分角整元拾佰仟万拾佰仟亿拾佰仟";

String temp="";

String result="";

if (input==null) return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";

temp=input.trim();

float f;

try{

f=Float.parseFloat(temp);

}catch(Exception e){

return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";

}

int len=0;

if(temp.indexOf(".")==-1) len=temp.length();

else len=temp.indexOf(".");

if(lens4.length()-3) return("输入字串最大只能精确到仟亿,小数点只能两位!");

int n1=0;

String num="";

String unit="";

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

if(ilen+2){break;}

if(i==len) {continue;}

n1=Integer.parseInt(String.valueOf(temp.charAt(i)));

num=s1.substring(n1,n1+1);

n1=len-i+2;

unit=s4.substring(n1,n1+1);

result=result.concat(num).concat(unit);

}

if((len==temp.length())||(len==temp.length()-1)) result=result.concat("整");

if(len==temp.length()-2) result=result.concat("零分");

return result;

}

}

java怎么将数字1转换为大写一

如下是一个将阿拉伯数字转为汉字的类,需要者可收藏到自己的util类库中以备不时之需。

public class ArabicToChineseUtils {

static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿", "万亿" };

static char[] numArray = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };

/**

* @param args

*/

public static void main(String[] args) {

int num = 245000006;

String numStr = foematInteger(num);

print("num= " + num + ", convert result: " + numStr);

double decimal = 245006.234206;

print("============================================================");

String decStr = formatDecimal(decimal);

print("decimal= " + decimal + ", decStr: " + decStr);

}

private static String foematInteger(int num) {

char[] val = String.valueOf(num).toCharArray();

int len = val.length;

StringBuilder sb = new StringBuilder();

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

String m = val[i] + "";

int n = Integer.valueOf(m);

boolean isZero = n == 0;

String unit = units[(len - 1) - i];

if (isZero) {

if ('0' == val[i - 1]) {

// not need process if the last digital bits is 0

continue;

} else {

// no unit for 0

sb.append(numArray[n]);

}

} else {

sb.append(numArray[n]);

sb.append(unit);

}

}

return sb.toString();

}

private static String formatDecimal(double decimal) {

String decimals = String.valueOf(decimal);

int decIndex = decimals.indexOf(".");

int integ = Integer.valueOf(decimals.substring(0, decIndex));

int dec = Integer.valueOf(decimals.substring(decIndex + 1));

String result = foematInteger(integ) + "." + formatFractionalPart(dec);

return result;

}

private static String formatFractionalPart(int decimal) {

char[] val = String.valueOf(decimal).toCharArray();

int len = val.length;

StringBuilder sb = new StringBuilder();

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

int n = Integer.valueOf(val[i] + "");

sb.append(numArray[n]);

}

return sb.toString();

}

private static void print(Object arg0) {

System.out.println(arg0);

}

}

关于java数字转大写和Java转大写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。