//练习:实现一亿以内大小写的转换器
var CHINACHAR = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
function transfer(x){
var str = '';
if(typeof x != 'number' || isNaN(x) || x > 100000000)return '';
var iWan = Math.floor(x / 10000);
var iSTY = Math.floor(x - iWan * 10000);
var iJF = Math.round(x * 100 ) % 100 ;
var iJ = Math.floor(iJF / 10);
var iF = Math.floor(iJF % 10);
if(iWan != 0){//考虑万和千之间加零得情况
str += transferS(iWan) + '万' ;
if(iWan % 10 == 0 || Math.floor(iSTY / 1000) == 0){//万位和千位有一个为零
if(iSTY != 0){
str += '零' ;
}
}
}
if(iSTY != 0){
str += transferS(iSTY);
}
//考虑小数
if(str != ''){//小数前面不为空
str += '元';
if(iJ != 0 || iF != 0){
if(iJ != 0){
str += CHINACHAR[iJ] + '角';
}
if(iF != 0){
str += CHINACHAR[iF] + '分';
}
}
}else{//小数前面为空
if(iJ != 0 || iF != 0){
if(iJ != 0){
str += CHINACHAR[iJ] + '角';
}
if(iF != 0){
str += CHINACHAR[iF] + '分';
}
}else{//没有小数
str += '零元';
}
}
return str;
}
function transferS(x){
var str = '';
var iS = Math.floor(x / 1000) ;
var iH = Math.floor(x / 100 % 10 );
var iT = Math.floor(x / 10 % 10);
var iY = Math.floor(x % 10);
if(typeof x != 'number' || isNaN(x) || x > 10000 ){
return str;
}
if(iS != 0){//千位不为零
str += CHINACHAR[iS] + '仟';
if(iH != 0){//千位不为零,百位不为零
str += CHINACHAR[iH] + '佰';
if(iT != 0){////千位不为零,百位不为零,十位不为0
str += CHINACHAR[iT] + '拾';
if(iY != 0){//千位不为零,百位不为零,十位不为0,各位不为零
str += CHINACHAR[iY];//1234
}
////千位不为零,百位不为零,十位不为0,各位为零
}else{////千位不为零,百位不为零,十位为0 //120x 1200 1204
if(iY != 0){//千位不为零,百位不为零,十位为0,各位不为零
str += '零' + CHINACHAR[iY];//1204
}
//千位不为零,百位不为零,十位为0,各位为零,什么都不用作 1200
}
}else{//千位不为零,百位为零 1000 1030 1004 1034
if(iT != 0){//千位不为零,百位为零,十位不为0;103x
str += '零' + CHINACHAR[iT] + '拾';
if(iY != 0){//千位不为零,百位为零,十位不为0,各位不为零 1034
str += CHINACHAR[iY];
}
//千位不为零,百位为零,十位不为0,各位为零,什么都不用作
}else{//千位不为零,百位为零,十位为0 100x
if(iY != 0){//千位不为零,百位为零,十位为0,各位不为零 1004
str += '零' + CHINACHAR[iY];
}
}
}
}else{//千位为零
if(iH != 0){//千位为零,百位不为零
str += CHINACHAR[iH] + '佰';
if(iT != 0){////千位为零,百位不为零,十位不为0
str += CHINACHAR[iT] + '拾';
if(iY != 0){//千位为零,百位不为零,十位不为0,各位不为零
str += CHINACHAR[iY];//1234
}
////千位为零,百位不为零,十位不为0,各位为零
}else{////千位为零,百位不为零,十位为0
if(iY != 0){//千位不为零,百位为零,十位为0,各位不为零
str += '零' + CHINACHAR[iY];//1204
}
//千位为零,百位不为零,十位为0,各位为零,什么都不用作 1200
}
}else{//千位为零,百位为零 0000 3x
if(iT != 0){//千位不为零,百位为零,十位不为0;103x
str += CHINACHAR[iT] + '拾';
if(iY != 0){//千位不为零,百位为零,十位不为0,各位不为零 1034
str += CHINACHAR[iY];
}
//千位为零,百位为零,十位不为0,各位为零,什么都不用作
}else{//十位为0 x
if(iY != 0){//千位为零,百位为零,十位为0,各位不为零 1004
str += CHINACHAR[iY];
}else{
str += '零';
}
}
}
}
return str;
}