- function digit_uppercase(n) {
- var fraction = ['角', '分'];
- var digit = [
- '零', '壹', '贰', '叁', '肆',
- '伍', '陆', '柒', '捌', '玖'
- ];
- var unit = [
- ['元', '万', '亿'],
- ['', '拾', '佰', '仟']
- ];
- var head = n < 0? '欠': '';
- n = Math.abs(n);
- var s = '';
- for (var i = 0; i < fraction.length; i++) {
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
- }
- s = s || '整';
- n = Math.floor(n);
- for (var i = 0; i < unit[0].length && n > 0; i++) {
- var p = '';
- for (var j = 0; j < unit[1].length && n > 0; j++) {
- p = digit[n % 10] + unit[1][j] + p;
- n = Math.floor(n / 10);
- }
- s = p.replace(/(零.)*零$/, '')
- .replace(/^$/, '零')
- + unit[0][i] + s;
- }
- return head + s.replace(/(零.)*零元/, '元')
- .replace(/(零.)+/g, '零')
- .replace(/^整$/, '零元整');
- }
整数测试数据
- alert(digit_uppercase(0)); // 零元整
- alert(digit_uppercase(123)); // 壹佰贰拾叁元整
- alert(digit_uppercase(1000000)); // 壹佰万元整
- alert(digit_uppercase(100000001)); // 壹亿零壹元整
- alert(digit_uppercase(1000000000)); // 壹拾亿元整
- alert(digit_uppercase(1234567890)); // 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元整
- alert(digit_uppercase(1001100101)); // 壹拾亿零壹佰壹拾万零壹佰零壹元整
- alert(digit_uppercase(110101010)); // 壹亿壹仟零壹拾万壹仟零壹拾元整
小数测试数据
- alert(digit_uppercase(0.12)); // 壹角贰分
- alert(digit_uppercase(123.34)); // 壹佰贰拾叁元叁角肆分
- alert(digit_uppercase(1000000.56)); // 壹佰万元伍角陆分
- alert(digit_uppercase(100000001.78)); // 壹亿零壹元柒角捌分
- alert(digit_uppercase(1000000000.90)); // 壹拾亿元玖角
- alert(digit_uppercase(1234567890.03)); // 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元叁分
- alert(digit_uppercase(1001100101.00)); // 壹拾亿零壹佰壹拾万零壹佰零壹元整
- alert(digit_uppercase(110101010.10)); // 壹亿壹仟零壹拾万壹仟零壹拾元壹角
负数测试数据
- alert(digit_uppercase(-0.12)); // 欠壹角贰分
- alert(digit_uppercase(-123.34)); // 欠壹佰贰拾叁元叁角肆分
- alert(digit_uppercase(-1000000.56)); // 欠壹佰万元伍角陆分
- alert(digit_uppercase(-100000001.78)); // 欠壹亿零壹元柒角捌分
- alert(digit_uppercase(-1000000000.90)); // 欠壹拾亿元玖角
- alert(digit_uppercase(-1234567890.03)); // 欠壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元叁分
- alert(digit_uppercase(-1001100101.00)); // 欠壹拾亿零壹佰壹拾万零壹佰零壹元整
- alert(digit_uppercase(-110101010.10)); // 欠壹亿壹仟零壹拾万壹仟零壹拾元壹角