这是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));
}
}
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));
}
}
<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>
<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>