这是JAVA的实现,触类旁通:
public class LowcasttoUpper 
{
  public LowcasttoUpper()
  {
  }  public static String LowerToUpperOfMoney(double je){ 
   String money="";//转换后的字符串 
  String num="零壹贰叁肆伍陆柒捌玖"; 
   String[] unit={"元","拾","佰","仟","万","拾万","佰万","仟万","亿","拾亿","佰亿","仟亿"}; 
   String s=String.valueOf(je);//将金额转换为字符串 
   int a=s.indexOf("+");//判断s是否包含'+',如1.67E+4 
   int e=s.indexOf("E");//判断s是否包含'E',如1.67E+4 
   //如果包含'E'(该金额是以科学记数法表示,则转换成普通表示法) 
   if(e!=-1){ 
     int index=0;//指数值 
     if(a==-1) index=Integer.parseInt(s.substring(e+1));//取得指数值 
     else index=Integer.parseInt(s.substring(a+1));//取得指数值 
     String sub1=s.substring(0,e);//取得尾数值 
     int dot=sub1.indexOf(".");//尾数的小数点位置 
     //如果不含有小数点,则在后面补index个'0' 
     if(dot==-1){ 
       for(int i=1;i<=index;i++){ 
         s=sub1+"0"; 
       } 
     }else{//如果含有小数点,则向后移动小数点index位 
       String sub11=sub1.substring(0,dot);//小数点前面的字串 
       String sub12=sub1.substring(dot+1);//小数点后面的字串 
       if(index>=sub12.length()){ 
         int j=index-sub12.length(); 
         for(int i=1;i<=j;i++){ 
           sub12=sub12+"0"; 
         } 
       }else{ 
         sub12=sub12.substring(0,index)+"."+sub12.substring(index); 
       } 
       s=sub11+sub12; 
     } 
   } 
   int sdot=s.indexOf(".");//s中小数点的位置 
   String beforeDot="";//小数点前面的字串 
   String afterDot="";//小数点后面的字串 
   //如果包含小数点 
   if(sdot!=-1){ 
     beforeDot=s.substring(0,sdot); 
     afterDot=s.substring(sdot+1); 
   }else{//不包含小数点 
     beforeDot=s; 
   } 
   int bl=beforeDot.length(); 
   boolean zero=false;//数字是否为零 
   int z=0;//'0'的个数 
   //逐位取数字 
   for(int j=0,i=bl-1;j<=bl-1;j++,i--){ 
     int number=Integer.parseInt(String.valueOf(beforeDot.charAt(j))); 
     if(number==0) { 
       zero=true; 
       z++; 
     }else { 
       zero=false; 
       z=0; 
     } 
     if(zero&&z==1) { 
       money+="零"; 
     }else if(zero){ 
     }else if(!zero){ 
       money+=num.substring(number,number+1)+unit[i]; 
     } 
   } 
   //删去多余的'万'和'亿' 
   for(int i=1;i<=2;i++){ 
     String ss=""; 
     if(i==1) ss="万"; 
     else ss="亿"; 
     int last=money.lastIndexOf(ss); 
     if(last!=-1){ 
       String moneySub1=money.substring(0,last); 
       String moneySub2=money.substring(last,money.length()); 
       int last2=moneySub1.indexOf(ss); 
       while(last2!=-1){ 
         moneySub1=moneySub1.substring(0,last2)+moneySub1.substring(last2+1,moneySub1.length()); 
         last2=moneySub1.indexOf(ss); 
       } 
       money=moneySub1+moneySub2; 
     } 
   } 
   //money中是否包含'元' 
   int yuan=money.indexOf("元"); 
   //如果不包含'元' 
   if(yuan==-1){ 
     int zi=money.lastIndexOf("零"); 
     //如果最后一位字符为'零',则删除它 
     if(zi==money.length()-1){ 
       money=money.substring(0,money.length()-1)+"元";//在money最后加上'元' 
     } 
   } 
   //如果小数点后面的字串不为空,则处理'角','分' 
   if(!afterDot.equals("")){ 
     int al=afterDot.length(); 
     if(al>2){//如果字串长度大于2,则截断 
       afterDot=afterDot.substring(0,2); 
       al=afterDot.length(); 
     } 
     //如果字符串不为'0'或'00',则处理,否则不进行处理 
     if(!afterDot.equals("0")&&!afterDot.equals("00")){ 
       //逐位取得字符 
       for(int i=0;i<al;i++){ 
         int number=Integer.parseInt(String.valueOf(afterDot.charAt(i))); 
         if(number!=0&&i==0){ 
           money+=num.substring(number,number+1)+"角"; 
         }else if(number!=0&&i==1){ 
           money+=num.substring(number,number+1)+"分"; 
         }else if(number==0&&i==0){ 
           money+="零"; 
         } 
       } 
     } 
   } 
   //如果不包含'角','分'则在最后加上'整'字 
   if(money.indexOf("角")==-1&&money.indexOf("分")==-1) money+="整"; 
   return money; 
 }  public static void main(String[] args)
  {
    System.out.print(LowcasttoUpper.LowerToUpperOfMoney(500560000670.23));
  }
}

解决方案 »

  1.   

    十万以内整数转换,其他类推。
    <script>
    function convertc(s){
    num=new Array("零","一","二","三","四","五","六","七","八","九");
    unt=new Array("","","十","百","千","万");
      s1=parseInt(s);
      s2=s1.toString();
      s3="";
     for(i=0,j=s2.length;i<s2.length;j--,i++){
       s3+=num[parseInt(s2.charAt(i))]+""+unt[j];} 
     //alert(s3);
     s=s3+s.substr(s2.length); 
     return s; }   
    </script>
    <input id=aa><button onclick="bb.value='';bb.value=convertc(aa.value)">covert</button><input id=bb>
      

  2.   

    修正
    <script>
    num=new Array("零","一","二","三","四","五","六","七","八","九");
    unt=new Array("","","十","百","千");
    function convert2(s){
       sr="";
       for(i=0,j=s.length;i<s.length;j--,i++){
        sr+=num[parseInt(s.charAt(i))]+""+((parseInt(s.charAt(i))==0)?"":unt[j]);} 
       return sr;
    }
    function convert1(s){
      if(s.length<5){ sr=convert2(s);return sr;}
      else if(s.length<9){
          s1=s.substring(0,s.length-4);s2=s.substring(s.length-4);
          sr=convert2(s1)+"万"+convert2(s2);
          return sr;
      }
      else if(s.length<13){
         s1=s.substring(0,s.length-8);s2=s.substring(s.length-8,s.length-4);s3=s.substring(s.length-4);
         sr=convert2(s1)+"亿"+convert(s2)+"万"+covert(s3);
         return sr;
      }    
    }
    function convert(s){
     if(isNaN(parseFloat(s))){sr="非法字符";return sr;}
     if(s.indexOf(".")>=0){
        ss=parseFloat(s).toString().split(".");sss="";
        for(i=0;i<ss[1].length;i++){ sss+=num[parseInt(ss[1].charAt(i))]+"";}
        sr=convert1(ss[0])+"点"+sss+s.substr(ss[0].length+ss[1].length+1);
        return sr;
     } 
     else{
        ss=parseInt(s).toString();
        sr=convert1(ss)+s.substr(ss.length);
        return sr;
      }
    }  
    </script>
    <input id=source onkeydown="if(event.keyCode==13)b.click()">
    <button onclick="result.value='';result.value=convert(source.value)" id=b>covert</button>
    <input id=result>