导航:首页 > 编程语言 > java人民币大写

java人民币大写

发布时间:2022-12-10 01:01:32

① 注释java人民币小写转换大写的代码

publicstatic String toRMB(double money) {
char[] s1 = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};
char[] s4 = {'分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万'};
//这两句是为后面转换做字典准备
String str = String.valueOf(Math.round(money * 100 + 0.00001));
//这是把参数money小数点后移2位,然后取整,即按照“分”为单位取整,再转为字符串型
String result = "";

for (int i = 0; i <str.length(); i++) {
int n = str.charAt(str.length() - 1 - i) - '0';
result = s1[n] + "" + s4[i] + result;
}
//这一段是按照转换出来的字符串按位取数字,再按照上面的字典将其逐位翻译成汉字
//如“2011”就翻译成“贰仟零佰壹拾壹元”,“98700432.10”就是“玖仟捌佰柒拾零万零仟肆佰叁拾贰元壹角零分”——注:这里的人民币大写汉字,貌似有错误,请查阅相关资料更正
//以上的翻译可以看出,和我们平时的认读有差别,于是以下就是在将那些应该纠正的地方手动剔除以下。上述两个例子最后得到的结果应该是“贰仟零壹拾壹元整”,“玖仟捌佰柒拾万零肆佰叁拾贰元壹角整”
result = result.replaceAll("零仟", "零");
result = result.replaceAll("零佰", "零");
result = result.replaceAll("零拾", "零");
result = result.replaceAll("零亿", "亿");
result = result.replaceAll("零万", "万");
result = result.replaceAll("零元", "元");
result = result.replaceAll("零角", "零");
result = result.replaceAll("零分", "零");

result = result.replaceAll("零零", "零");
result = result.replaceAll("零亿", "亿");
result = result.replaceAll("零零", "零");
result = result.replaceAll("零万", "万");
result = result.replaceAll("零零", "零");
result = result.replaceAll("零元", "元");
result = result.replaceAll("亿万","亿");

result = result.replaceAll("零$", "");
result = result.replaceAll("元$", "元整");
result = result.replaceAll("角$", "角整");

return result;
}

② java简单题:一组金额数据,用人民币大写显示出来

/**
*程序目的:
*从命令行接收一个数,并将其转化为中文金额的大写方式
*例如123.45-->壹佰贰拾叁元肆角伍分
*@authorgdb
*
*实在是不符合规范,程序里面的算法没有让人明白得很清楚的注释,读上去觉得有
*点难度,可读性不强。而且很多程序还存在不少bug,随便一测就测出来了。
*所以本人还是决定重新写一下这个程序,并且尽量做到消除不必要的bug。这个程
*序我没有用什么很精妙的算法,不过用了一些Java类库中的类,像是正则表达式之类
*
*/
publicclassTrans2RMB{

/**
*测试程序的可行性
*@paramargs
*/
publicstaticvoidmain(String[]args){
System.out.println(" --------将数字转换成中文金额的大写形式------------ ");
Trans2RMBt2r=newTrans2RMB();
Strings=t2r.cleanZero(t2r.splitNum(t2r.roundString(t2r.getNum())));
//如果转换过后是一个空串,则不输出屏幕
if(!"".equals(s)){
System.out.println("转换成中文后为:"+s);;
}
System.out.println(" ---------------------------------------------");
}

/**
*从命令行接收一个数,在其中调用checkNum()方法对其进行
*验证,并返回相应的值
*@return如果输入合法,返回输入的这个数
*/
privateStringgetNum(){
Strings=null;
System.out.println("请输入一个数字(精确到小数点后两位):");
//从命令行输入这个浮点数
java.util.Scannerscanner=newjava.util.Scanner(System.in);
s=scanner.next();
//关闭这个Scanner
scanner.close();
//判断用户输入是否合法
//若合法,返回这个值;若非法返回"0"
if(this.checkNum(s)){
returns;
}else{
return"";
}
}

/**
*判断用户输入的数据是否合法,用户只能输入大于零的数字,不能输入其它字符
*@paramsString
*@return如果用户输入数据合法,返回true,否则返回false
*/
privatebooleancheckNum(Strings){
//如果用户输入的数里有非数字字符,则视为非法数据,返回false
try{
floatf=Float.valueOf(s);
//如果这个数小于零则视为非法数据,返回false
if(f<0){
System.out.println("非法数据,请检查!");
returnfalse;
}else{
returntrue;
}
}catch(NumberFormatExceptione){
System.out.println("非法数据,请检查!");
returnfalse;
}
}

/**
*把用户输入的数以小数点为界分割开来,并调用numFormat()方法
*进行相应的中文金额大写形式的转换
*注:传入的这个数应该是经过roundString()方法进行了四舍五入操作的
*@paramsString
*@return转换好的中文金额大写形式的字符串
*/
privateStringsplitNum(Strings){
//如果传入的是空串则继续返回空串
if("".equals(s)){
return"";
}
//以小数点为界分割这个字符串
intindex=s.indexOf(".");
//截取并转换这个数的整数部分
StringintOnly=s.substring(0,index);
Stringpart1=this.numFormat(1,intOnly);
//截取并转换这个数的小数部分
StringsmallOnly=s.substring(index+1);
Stringpart2=this.numFormat(2,smallOnly);
//把转换好了的整数部分和小数部分重新拼凑一个新的字符串
StringnewS=part1+part2;
returnnewS;
}

/**
*对传入的数进行四舍五入操作
*@paramsString从命令行输入的那个数
*@return四舍五入后的新值
*/
privateStringroundString(Strings){
//如果传入的是空串则继续返回空串
if("".equals(s)){
return"";
}
//将这个数转换成double类型,并对其进行四舍五入操作
doubled=Double.parseDouble(s);
//此操作作用在小数点后两位上
d=(d*100+0.5)/100;
//将d进行格式化
s=newjava.text.DecimalFormat("##0.000").format(d);
//以小数点为界分割这个字符串
intindex=s.indexOf(".");
//这个数的整数部分
StringintOnly=s.substring(0,index);
//规定数值的最大长度只能到万亿单位,否则返回"0"
if(intOnly.length()>13){
System.out.println("输入数据过大!(整数部分最多13位!)");
return"";
}
//这个数的小数部分
StringsmallOnly=s.substring(index+1);
//如果小数部分大于两位,只截取小数点后两位
if(smallOnly.length()>2){
StringroundSmall=smallOnly.substring(0,2);
//把整数部分和新截取的小数部分重新拼凑这个字符串
s=intOnly+"."+roundSmall;
}
returns;
}

/**
*把传入的数转换为中文金额大写形式
*@paramflagint标志位,1表示转换整数部分,0表示转换小数部分
*@paramsString要转换的字符串
*@return转换好的带单位的中文金额大写形式
*/
privateStringnumFormat(intflag,Strings){
intsLength=s.length();
//货币大写形式
StringbigLetter[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//货币单位
Stringunit[]={"元","拾","佰","仟","万",
//拾万位到仟万位
"拾","佰","仟",
//亿位到万亿位
"亿","拾","佰","仟","万"};
Stringsmall[]={"分","角"};
//用来存放转换后的新字符串
StringnewS="";
//逐位替换为中文大写形式
for(inti=0;i<sLength;i++){
if(flag==1){
//转换整数部分为中文大写形式(带单位)
newS=newS+bigLetter[s.charAt(i)-48]+unit[sLength-i-1];
}elseif(flag==2){
//转换小数部分(带单位)
newS=newS+bigLetter[s.charAt(i)-48]+small[sLength-i-1];
}
}
returnnewS;
}

/**
*把已经转换好的中文金额大写形式加以改进,清理这个字
*符串里面多余的零,让这个字符串变得更加可观
*注:传入的这个数应该是经过splitNum()方法进行处理,这个字
*符串应该已经是用中文金额大写形式表示的
*@paramsString已经转换好的字符串
*@return改进后的字符串
*/
privateStringcleanZero(Strings){
//如果传入的是空串则继续返回空串
if("".equals(s)){
return"";
}
//如果用户开始输入了很多0去掉字符串前面多余的'零',使其看上去更符合习惯
while(s.charAt(0)=='零'){
//将字符串中的"零"和它对应的单位去掉
s=s.substring(2);
//如果用户当初输入的时候只输入了0,则只返回一个"零"
if(s.length()==0){
return"零";
}
}
//字符串中存在多个'零'在一起的时候只读出一个'零',并省略多余的单位
/*由于本人对算法的研究太菜了,只能用4个正则表达式去转换了,各位大虾别介意哈...*/
Stringregex1[]={"零仟","零佰","零拾"};
Stringregex2[]={"零亿","零万","零元"};
Stringregex3[]={"亿","万","元"};
Stringregex4[]={"零角","零分"};
//第一轮转换把"零仟",零佰","零拾"等字符串替换成一个"零"
for(inti=0;i<3;i++){
s=s.replaceAll(regex1[i],"零");
}
//第二轮转换考虑"零亿","零万","零元"等情况
//"亿","万","元"这些单位有些情况是不能省的,需要保留下来
for(inti=0;i<3;i++){
//当第一轮转换过后有可能有很多个零叠在一起
//要把很多个重复的零变成一个零
s=s.replaceAll("零零零","零");
s=s.replaceAll("零零","零");
s=s.replaceAll(regex2[i],regex3[i]);
}
//第三轮转换把"零角","零分"字符串省略
for(inti=0;i<2;i++){
s=s.replaceAll(regex4[i],"");
}
//当"万"到"亿"之间全部是"零"的时候,忽略"亿万"单位,只保留一个"亿"
s=s.replaceAll("亿万","亿");
returns;
}
}

③ 谁有简化的方法用JAVA编写一个把表示人民币的阿拉伯数字转化为大写汉字的方法

public class RenMingBi {

/**
* @param args add by zxx ,Nov 29, 2008
*/
private static final char[] data = new char[]{
'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'
};
private static final char[] units = new char[]{
'元','拾','佰','仟','万','拾','佰','仟','亿'
};
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(
convert(135689123));
}

public static String convert(int money)
{
StringBuffer sbf = new StringBuffer();
int unit = 0;
while(money!=0)
{
sbf.insert(0,units[unit++]);
int number = money%10;
sbf.insert(0, data[number]);
money /= 10;
}

return sbf.toString();
}
}

④ 如何用Java编程实现人民币大小写转换

public String GetBigMoney(double eSender)
{
double NewMoney;
int Index, len, flag;
String StrTemp = null;
char[] p;
String Number[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String MonetaryUnit[] = {"万","仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","元","角","分"} ;
NewMoney = Math.abs(eSender);
System.out.println(NewMoney);
DecimalFormat deciformat;
deciformat=(DecimalFormat)DecimalFormat.getInstance();
deciformat.applyPattern("#######");
String m = java.lang.String.valueOf(deciformat.format(NewMoney * 100));
int i;
if((i = m.indexOf('.')) != -1)
m = m.substring(0, i);
p = new char[m.length()];
//p = new char[40];
m.getChars(0, m.length(), p, 0);
//len=m.length();
if (NewMoney > 100000000000.00) {
StrTemp = ""; // FloatAsComma( NewMoney, False );
return StrTemp;
}
if (NewMoney < 0.01) {
StrTemp = "零";
return StrTemp;
}
if (eSender<0) {
StrTemp = "负";
}
else {
StrTemp = "";
}
flag = 1;
len =p.length;
System.out.println("1111");
System.out.println(len);
for (Index=(15-len);Index<15;Index++)
{
if (p[Index - 15 + len]!='0')
{
StrTemp = StrTemp + Number[Integer.parseInt(String.valueOf(p[Index-15+len]))];
StrTemp = StrTemp + MonetaryUnit[Index];
}
else
{
if (Index == 5)
{
if ((p[Index - 14 + len]!= '0') || (p[Index-13+len] != '0'))
{
StrTemp = StrTemp + MonetaryUnit[Index + 3];
flag = 0;
}

}
else
{
if ((Index == 12) ||( (Index == 8) && (flag ==1)) || (Index == 4))
{
StrTemp = StrTemp + MonetaryUnit[Index];
}
if ((p[Index-15 + len] != '0') && (Index != 14))
{
StrTemp = StrTemp +Number[Integer.parseInt(String.valueOf(p[Index-15+len]))];
;
}
}
}
}
if (p[m.length()-1] == '0')
{
StrTemp = StrTemp + "整";
}
return StrTemp;
}

⑤ java:人民币大小写转换:比如比输入123456,要求输出:拾贰万叁仟肆佰伍拾柒,请不要用数组方法

public class MoneySmallToBig {
转自CSDN的东东
/**
* 人民币大小写转换
*/
//别说这里用数组,这里定义大写的是必须的
public static String[] number = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖" };
public static String[] units = new String[]{"元","拾","佰","仟"};
public static void change(String smoney){
StringBuffer sb=new StringBuffer();
//小数点的位置
int index=smoney.indexOf(".");

//biggerstr用于存放存有数字和单位的字符
StringBuffer biggerstr=new StringBuffer();

//处理小数部分
biggerstr.append("分");
biggerstr.append(number[Integer.parseInt(smoney.charAt(index+2)+"")]);
biggerstr.append("角");
biggerstr.append(number[Integer.parseInt(smoney.charAt(index+1)+"")]);

//处理整数部分
for(int i=0;i<index;i++){
sb.append(number[Integer.parseInt(smoney.charAt(i)+"")]);
}
sb=sb.reverse();
String insertstr=sb.toString();
for(int i=0;i<insertstr.length();i++){
//插入单位
if(i==0){
biggerstr.append("元");
}
else if((i+4)%4==0 && i!=8){
biggerstr.append("万");
}
else if(i%8==0){
biggerstr.append("亿");
}
else
biggerstr.append(units[i%4]);
//插入数字
biggerstr.append(insertstr.charAt(i));
}

//instead_zero字符串用于存放清除零之后的
String instead_zero=biggerstr.reverse().toString();
instead_zero=instead_zero.replaceAll("零分", "零");
instead_zero=instead_zero.replaceAll("零角", "零");
instead_zero=instead_zero.replaceAll("零佰", "零");
instead_zero=instead_zero.replaceAll("零仟", "零");
instead_zero=instead_zero.replaceAll("零拾", "零");
//把相连的零去掉
instead_zero=instead_zero.replaceAll("[零]+","零");
instead_zero=instead_zero.replaceAll("零元", "元");
instead_zero=instead_zero.replaceAll("零万", "万");
instead_zero=instead_zero.replaceAll("零亿", "亿");
//把字符串中的最后一个零去掉
if(instead_zero.charAt(instead_zero.length()-1)=='零'){
instead_zero=instead_zero.substring(0, instead_zero.length()-1);
}
System.out.println(instead_zero);
}
public static void main(String[] args) {
String smoney="1020089090.89";
change(smoney);
}
}

⑥ java方式实现数字转换成中文大写

String mm[]=rmb.split("\\.");这里的小数点应该该是这样的

⑦ 人民币大写怎么写

人民币的大写是:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零。

大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

(7)java人民币大写扩展阅读

计数的数目字用大写,是自古一直沿用到现在,虽然解放后有些账目逐渐改用阿拉伯数字,但是重要账目;支票汇款;股票国债票据依旧使用大写汉字数字。那么,使用大写数字是起源于何时呢?

《咬文嚼字》2004年第12期上刊登的侯嘉亮先生《大写数字的来历》一文是这样说的:“为反贪树廉,朱元璋还制定了惩治经济犯罪的严格法令 并在财务管理上进行技术防范,实施了一些行之有效的措施。

把记载钱粮数字的汉字‘一、二、三、四、五、六、七、 八、九、十、百、千’改为大写,用‘壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟’,就是其中重要的一条。”这就是说,用大写数字记数,是起源于明太祖朱元璋。

上面的说法可靠吗?据有关的资料记载,并非如此。大写数字的使用,最迟也得再上溯近七百年,首倡者当推富有改革精神的唐代武则天。她是绝无仅有的敢于自创文字的女皇;她的名字武曌的“曌”字,就是明证。

据明末清初的着名学者、考据家顾炎武所着《金石文字记·岱岳观造像记》,可知《岱岳观造像记》是则天朝所树立的石碑,上面有大写数字。顾炎武考证说:“凡数字作壹、贰、叁、肆、伍、陆、柒、捌、玖等,皆武后所改及自制字。”

大写数字在则天朝以后不仅使用在碑石上,也出现在诗文中。唐着名大诗人白居易的宋版《白氏长庆集》中《论行营状请勒魏博等四道兵马却守本界事》有这样的记述:“况其军一月之费,计实钱贰拾漆捌万贯。”其中“贰”“拾”“漆”“捌”都是大写数字。顾炎武说这个“漆”字,本应作“桼”,多的三点是后人妄自加凿的。“漆”后简为“柒”,又省作“七”。

大约到了宋代,官府文书所用计数数字都得用大写。宋代学者程大昌在其所着《演繁露·十数改用画字》中写道:“今官府文书凡计其数,皆取声同而画多者改用之。于是壹、贰、叁、肆之类,本皆非数,直是取同声之字,借以为用,贵点画多不可改换为奸耳。”

上面所举有关的记述,都充分证明,使用大写数字记数,是在武则天当政的时期,距今已有1300多年了,它并非像侯先生所说的始于明代朱元璋时期。

⑧ 用java编译金额的中文大写转换。

/**
* 金额小数转换成中文大写金额
* @author Neil Han
*
*/
public class ConvertMoneyToUppercase {

private static final String UNIT[] = { "万", "千", "佰", "拾", "亿", "千", "佰",
"拾", "万", "千", "佰", "拾", "元", "角", "分" };

private static final String NUM[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆",
"柒", "捌", "玖" };

private static final double MAX_VALUE = 9999999999999.99D;

/**
* 将金额小数转换成中文大写金额
* @param money
* @return result
*/
public static String convertMoney(double money) {
if (money < 0 || money > MAX_VALUE)
return "参数非法!";
long money1 = Math.round(money * 100); // 四舍五入到分
if (money1 == 0)
return "零元整";
String strMoney = String.valueOf(money1);
int numIndex = 0; // numIndex用于选择金额数值
int unitIndex = UNIT.length - strMoney.length(); // unitIndex用于选择金额单位
boolean isZero = false; // 用于判断当前为是否为零
String result = "";
for (; numIndex < strMoney.length(); numIndex++, unitIndex++) {
char num = strMoney.charAt(numIndex);
if (num == '0') {
isZero = true;
if (UNIT[unitIndex] == "亿" || UNIT[unitIndex] == "万"
|| UNIT[unitIndex] == "元") { // 如果当前位是亿、万、元,且数值为零
result = result + UNIT[unitIndex]; //补单位亿、万、元
isZero = false;
}
}else {
if (isZero) {
result = result + "零";
isZero = false;
}
result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];
}
}
//不是角分结尾就加"整"字
if (!result.endsWith("角")&&!result.endsWith("分")) {
result = result + "整";
}
//例如没有这行代码,数值"400000001101.2",输出就是"肆千亿万壹千壹佰零壹元贰角"
result = result.replaceAll("亿万", "亿");
return result;
}

public static void main(String[] args) {
double value = Double.parseDouble("40330701101.2");
System.out.println("您输入的金额(小写)为:" + value);
System.out.println("您输入的金额(大写)为:" + convertMoney(value));
}

}

⑨ 用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来实现最高五位的人民币转换为大写的一个小程序,用最基础的方法

//这个可以直接插到jsp页面中的。也可以自行调整为servlet。
//处理大写问题
int value = Integer.parseInt(getParameter("inmoney"));//inmoney是别的页面传递的参数。

char[] hunit={'拾','佰','仟'}; //段内位置表示
char[] vunit={'万','亿'}; //段名表示
char[] digit={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; //数字表示
// long midVal = (long)(value*100); ////存在精度问题,如0.9->0.8999...
BigDecimal midVal = new BigDecimal(Math.round(value)); //转化成整形,替换上句
String valStr=String.valueOf(midVal); //转化成字符串
String head=valStr.substring(0,valStr.length()); //取整数部分
// 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(); //把整数部分转化成字符数组
boolean preZero=false; //标志当前位的上一位是否为有效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
preZero=true;
zeroSerNum++; //连续0次数递增
if(idx==0 && vidx >0 &&zeroSerNum < 4){
prefix += vunit[vidx-1];
preZero=false; //不管上一位是否为0,置为无效0位
}
}else{
zeroSerNum = 0; //连续0次数清零
if(preZero) { //上一位为有效0位
prefix+=digit[0]; //只有在这地方用到'零'
preZero=false;
}
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 +="圆整"; //如果整数部分存在,则有圆的字样
}

阅读全文

与java人民币大写相关的资料

热点内容
海康威视sip服务器地址 浏览:163
挖掘机程序员哪个好 浏览:458
方舟怎么进上一次进的服务器 浏览:635
pdf怎样剪切 浏览:906
git编译所有文件命令 浏览:694
伪军pdf 浏览:418
如何判断基本命令 浏览:972
pdf批量删除 浏览:943
广播android静态动态区别 浏览:390
centos7设置为命令行启动 浏览:570
程序员资质资格证 浏览:217
常见编码加密 浏览:236
阿狸免费云服务器 浏览:764
快速配置服务器bmc地址 浏览:968
机械手臂编程自动化 浏览:501
怎么看银行app的银行卡号 浏览:84
pdf文件改ppt 浏览:196
ecs对比云服务器 浏览:852
必剪app怎么没有美颜 浏览:176
唯库的视频怎么下载app 浏览:465