数字金额转写为中文大写

function toCNcase(num) {num = String(num);var cn = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];var position = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万', '拾', '佰', '仟'];// 整数部分var intPart = num.split('.')[0];// 小数部分var floatPart = num.split('.')[1];// 结果var result = '';// 是否为0var isZero = false;if(intPart.length > position.length){return '你输入的数字过大'}for (var index = 0; index < intPart.length; index++) {var num = intPart[index]; // 当前位的数字var numCN = cn[num]; // 当前位的数字对应的中文大写数字var numPreOne = intPart[index - 1]; // 当前位的前一位数字var numPreTwo = intPart[index - 2]; // 当前位的前第二位数字var numPreThree = intPart[index - 3]; // 当前位的第三位数字var numNextOne = intPart[index + 1] // 当前位的后第一位数字var numNextTwo = intPart[index + 2] // 当前位的后第二位数字var numNextThree = intPart[index + 3] // 当前位的后第三位数字var pos = position[intPart.length - index - 1] // 当前数字对应的单位if (num != 0) {// 当前位数字不为0,用大写数加单位result += numCN + pos;} else if ('亿' === pos || ('万' === pos && [numPreOne, numPreTwo, numPreThree].some(function (num) { return num !== '0' }))) {// 当前位数字为0,单位亿不能省略,单位万的前三位任意一位不为0,不能省略万result += pos;} else if ('仟' === pos && [numNextOne, numNextTwo, numNextThree].some(function (num) { return num !== '0' })) {// 当前数字是0,单位是含有仟,并且后四位不全部为0,补充一个零result += numCN;} else if ('佰' === pos && numPreOne !== '0' && [numNextOne, numNextTwo].some(function (num) { return num !== '0' })) {// 当前位数字为0,单位含有佰,并且当前位的前一位不为0,补充一个零result += numCN;} else if ('拾' === pos && numPreOne !== '0' && numNextOne !== '0') {// 当前位数字为0,单位含有拾,并且当前位的前一位不为0,补充一个零result += numCN;}}result += '圆'var floatPositon = ['角','分'];for (var index = 0; index < floatPart.length; index++) {var num = floatPart[index]; // 当前位的数字var numCN = cn[num]; // 当前位的数字对应的中文大写数字var pos = floatPositon[index] || '';if(num !== '0' && pos){result += numCN + pos ;}}return result;
}

使用方式:toCNcase(11002031022.0234);
结果:壹佰壹拾亿零贰佰零叁万壹仟零贰拾贰圆贰分


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部