这是wjmmml(笑着悲伤) 总结出来的,很有用的!呵呵function ChangeToBig(value)
{
var intFen,i;
var strArr,strCheck,strFen,strDW,strNum,strBig,strNow; if(trim(value)=="")   //数据为空时返回"零"
return "零";
if (isNaN(value))   //数据非法时提示,并返回空串
{
strErr = "数据"+value+"非法!"
alert(strErr);
return "";
}
strCheck = value+".";
strArr = strCheck.split(".");
strCheck = strArr[0];
if(strCheck.length>12)   //数据大于等于一万亿时提示无法处理
{
strErr = "数据"+value+"过大,无法处理!"
alert(strErr);
return "";
}
try
{
i = 0;
strBig = "";
intFen = value*100;          //转换为以分为单位的数值
strFen = intFen.toString();
strArr = strFen.split(".");
strFen = strArr[0];
intFen = strFen.length;      //获取长度
strArr = strFen.split(""); //将各个数值分解到数组内
while(intFen!=0)   //分解并转换
{
i = i+1;
switch(i)              //选择单位
{
case 1:strDW = "分";break;
case 2:strDW = "角";break;
case 3:strDW = "元";break;
case 4:strDW = "拾";break;
case 5:strDW = "佰";break;
case 6:strDW = "仟";break;
case 7:strDW = "万";break;
case 8:strDW = "拾";break;
case 9:strDW = "佰";break;
case 10:strDW = "仟";break;
case 11:strDW = "亿";break;
case 12:strDW = "拾";break;
case 13:strDW = "佰";break;
case 14:strDW = "仟";break;
}
switch (strArr[intFen-1])              //选择数字
{
case "1":strNum = "壹";break;
case "2":strNum = "贰";break;
case "3":strNum = "叁";break;
case "4":strNum = "肆";break;
case "5":strNum = "伍";break;
case "6":strNum = "陆";break;
case "7":strNum = "柒";break;
case "8":strNum = "捌";break;
case "9":strNum = "玖";break;
case "0":strNum = "零";break;
} //处理特殊情况
strNow = strBig.split("");
//分为零时的情况
if((i==1)&&(strArr[intFen-1]=="0"))
strBig = "整";
//角为零时的情况
else if((i==2)&&(strArr[intFen-1]=="0"))
{    //角分同时为零时的情况
if(strBig!="整")
strBig = "零"+strBig;
}
//元为零的情况
else if((i==3)&&(strArr[intFen-1]=="0"))
strBig = "元"+strBig;
//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元"))
strBig = "零"+strBig;
//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{} 
//拾-仟中一位为零且其前一位是元且为零的情况时跨过
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元"))
{}
//当万为零时必须补上万字
else if((i==7)&&(strArr[intFen-1]=="0"))
strBig ="万"+strBig;
//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万"))
strBig = "零"+strBig;
//拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万"))
{}
//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{}
//万位为零且存在仟位和十万以上时,在万仟间补零
else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
//单独处理亿位
else if(i==11)
{
//亿位为零且万全为零存在仟位时,去掉万补为零
if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
strBig ="亿"+"零"+strBig.substring(1,strBig.length);
//亿位为零且万全为零不存在仟位时,去掉万
else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))
strBig ="亿"+strBig.substring(1,strBig.length);
//亿位不为零且万全为零存在仟位时,去掉万补为零
else if((strNow[0]=="万")&&(strNow[2]=="仟"))
strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
//亿位不为零且万全为零不存在仟位时,去掉万
else if((strNow[0]=="万")&&(strNow[2]!="仟"))
strBig = strNum+strDW+strBig.substring(1,strBig.length);
//其他正常情况
else
strBig = strNum+strDW+strBig;
}
//拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿"))
strBig = "零"+strBig;
//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿"))
{}
//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{}
//亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟"))
strBig = strNum+strDW+strBig.substring(1,strBig.length);
//亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟"))
strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);
else
strBig = strNum+strDW+strBig;
strFen = strFen.substring(0,intFen-1);
intFen = strFen.length;
strArr = strFen.split("");
}
return strBig;
}catch(err){
return "";      //若失败则返回原值
}
}

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1065/1065682.xml?temp=.1907007
      

  2.   

    不知道有没有这个基本类,自己做了个
    import java.util.*;
    public class ConverterTest{
     public static void main(String [] arg){
       ChineseConverter converter = new ChineseConverter();
       System.out.println(converter.convertNumber("102.8"));
        System.out.println(converter.convertNumber("102.08"));
        System.out.println(converter.convertNumber("0.08"));
         System.out.println(converter.convertNumber("102002.08"));
        System.out.println(converter.convertNumber("1002002.08"));
     }
    }
     abstract class Converter{
       protected  HashMap numMap = initNumberMap();
       protected HashMap firstUnitMap = initFirstUnitMap();
       protected HashMap secondUnitMap = initsecondUnitMap();
       protected String dot = initDot();
       protected abstract   HashMap initNumberMap();
       protected abstract   HashMap initFirstUnitMap();
       protected abstract   HashMap initsecondUnitMap();
       protected abstract String initDot();
       public String convertNumber(String number){
         String result = null;
         int index = number.indexOf(".");
         String firstString = null;
         String secondString = null;
         if(index==-1)
          firstString = number;
          else{
            firstString = number.substring(0,index);
            secondString = number.substring(index+1,number.length());
          }
          if(firstString!=null){
            result = convertFirstString(firstString);
            if(result!=null)
              result += dot;
            else
              result ="";
            result += convertSecondString(secondString);      }      return result;
       } protected abstract String convertFirstString(String str); protected abstract String convertSecondString(String str);
    } class ChineseConverter extends Converter{  public   HashMap initNumberMap(){
        HashMap result = new HashMap();
        result.put("0","零");
        result.put("1","壹");
        result.put("2","贰");
        result.put("3","叁");
        result.put("4","肆");
        result.put("5","伍");
        result.put("6","陆");
        result.put("7","柒");
        result.put("8","捌");
        result.put("9","玖");
        return result;
      }
      protected   HashMap initFirstUnitMap(){
            HashMap result = new HashMap();
            result.put("0","圆");
            result.put("1","十");
            result.put("2","佰");
            result.put("3", "千");
            result.put("4", "万");
            result.put("5", "十万");
            result.put("6","百万");
            return result;
      }
      protected    HashMap initsecondUnitMap(){
        HashMap result = new HashMap();
        result.put("0","角");
        result.put("1","分");
       result.put("2","厘");     return result;
      }
      protected  String initDot(){    return "";
      }
      protected String convertDot(){
       return dot;
     }    protected String convertFirstString(String str){
          String result = "";
          if((new Integer(str)).intValue()== 0 )
            return null;
          char [] number = str.toCharArray();
          for(int i = 0 ;i < str.length();i++){        if(i>0 && number[i]=='0'){
              if(number[i-1]!='0')
                       result +=(String)numMap.get("0");
                 continue;
            }
           result +=  getFisrtUnit(str.length()-i-1,number[i]);      }
          return result;
        }    protected String convertSecondString(String str) {
          String result = "";
          if ( (new Integer(str)).intValue() == 0)
            return null;
          char[] number = str.toCharArray();
          for (int i = 0; i < str.length(); i++) {
            result += getSecondUnit(i, number[i]);
          }
          return result;
        }    protected String getFisrtUnit(int index,char num){
          if(String.valueOf(num).equals("0"))
            return "";
          String unit = (String)firstUnitMap.get(String.valueOf(index));
          unit =  unit ==null?"":unit;
          String result = (String)numMap.get(String.valueOf(num))+unit;
          return result;
        }    protected String getSecondUnit(int index,char num){
          if(String.valueOf(num).equals("0"))
            return "";
          String unit = (String)secondUnitMap.get(String.valueOf(index));
          unit =  unit ==null?"":unit;
          String result = (String)numMap.get(String.valueOf(num))+unit;
          return result;
        }}
      

  3.   

    String UpperMoney(double jn)
    {
        int L , ZL , Z , U , V;
        AnsiString F = "壹贰叁肆伍陆柒捌玖" ;
        AnsiString G = "元万亿万拾佰仟分角" ;
        AnsiString AA , B , JNS;
        JNS.SetLength(255);
        double je ;    if(jn<=0)
           return "零" ;je=(jn<1?jn*100:jn);sprintf(JNS.c_str(),"%26.2f",je) ;
    JNS=TrimRight(TrimLeft(JNS)) ;L = StrLen(JNS.c_str()) ; 
    L=(jn<1?(jn<0.1?1:2):L) ;ZL = L+1 ;AA =AnsiString("") ;
    B = AnsiString("") ; for( ;L>0; )
        {
            Z = StrToInt(JNS.SubString(ZL-L,1)) ; 
            U = int(L/4) ; 
            V = L%4 ;         if( Z>0 ) 
            { 
                U=(V==0?U+U-1:V+V+(U>0?7:13)) ; 
                AA = AA+B+F.SubString(Z+Z-1,2)+G.SubString(U,2) ;
                B = "" ;
            } 
            else 
            {
                if(L==1)
                    AA=AA+"整" ; 
                else
                {
                    if(V==0)
                        AA=AA+G.SubString(U*2-1,2); 
                    else
                        AA=AA+"" ;
                }            B=(V>=0?"零":"") ;
            }
            L=(L==4?2:L-1) ;
        }
        return AA ;
    }
    服了你了.发了这么多贴子