yoyo-ng-modulewindy
Version:
服务于52ABP模板的前端开源的相关组件内容。整合了ng-alain和你NG ZORRO的内容
121 lines • 4.04 kB
JavaScript
export function numberToChinese(value, rmb, options) {
if (rmb === void 0) { rmb = true; }
options = Object.assign({
minusSymbol: '负',
validThrow: false,
}, options);
if (typeof value === 'number')
value = value.toString();
if (!/^-?\d+(\.\d+)?$/.test(value) && options.validThrow)
throw new Error(value + " is invalid number type");
var integer, decimal;
_a = value.split('.'), integer = _a[0], decimal = _a[1];
var symbol = '';
if (integer.startsWith('-')) {
symbol = options.minusSymbol;
integer = integer.substr(1);
}
if (/^-?\d+$/.test(value))
decimal = null;
integer = (+integer).toString();
var unit = {
num: rmb
? ['', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '点']
: ['', '一', '二', '三', '四', '五', '六', '七', '八', '九', '点'],
radice: rmb
? [
'',
'拾',
'佰',
'仟',
'万',
'拾',
'佰',
'仟',
'亿',
'拾',
'佰',
'仟',
'万亿',
'拾',
'佰',
'仟',
'兆',
'拾',
'佰',
'仟',
]
: [
'',
'十',
'百',
'千',
'万',
'十',
'百',
'千',
'亿',
'十',
'百',
'千',
'万亿',
'十',
'百',
'千',
'兆',
'十',
'百',
'千',
],
dec: ['角', '分', '厘', '毫'],
};
if (rmb)
value = (+value).toFixed(5).toString();
var integerRes = '';
var integerCount = integer.length;
if (integer === '0' || integerCount === 0) {
integerRes = '零';
}
else {
var cnDesc = '';
for (var i = 0; i < integerCount; i++) {
var n = +integer[i], j = integerCount - i - 1, isZero = i > 1 && n !== 0 && integer[i - 1] === '0', cnZero = isZero ? '零' : '', isEmpptyUnit = (n === 0 && j % 4 !== 0) || integer.substr(i - 3, 4) === '0000', descMark = cnDesc;
var cnNum = unit.num[n];
cnDesc = isEmpptyUnit ? '' : unit.radice[j];
// 第一位是一十
if (i === 0 && cnNum === '一' && cnDesc === '十')
cnNum = '';
var isChangeEr = n > 1 &&
cnNum === '二' && // 去除首位
['', '十', '百'].indexOf(cnDesc) === -1 && // 不读两\两十\两百
descMark !== '十'; // 不读十两
if (isChangeEr)
cnNum = '两';
integerRes += cnZero + cnNum + cnDesc;
}
}
// 小数部分拼接
var decimalRes = '';
var decimalCount = decimal ? decimal.toString().length : 0;
if (decimal === null) {
decimalRes = rmb ? '整' : '';
}
else if (decimal === '0') {
decimalRes = '零';
}
else {
for (var i = 0; i < decimalCount; i++) {
if (rmb && i > unit.dec.length - 1)
break;
var n = decimal[i], cnZero = n === '0' ? '零' : '', cnNum = unit.num[n], cnDesc = rmb ? unit.dec[i] : '';
decimalRes += cnZero + cnNum + cnDesc;
}
}
var ret = symbol +
(rmb
? integerRes + (decimalRes === '零' ? '元整' : "\u5143" + decimalRes)
: integerRes + (decimalRes === '' ? '' : "\u70B9" + decimalRes));
return ret;
var _a;
}
//# sourceMappingURL=number-to-chinese.js.map