mand-mobile
Version:
A Vue.js 2.0 Mobile UI Toolkit
111 lines (92 loc) • 2.49 kB
JavaScript
const cnNums = ['\u96f6', '\u58f9', '\u8d30', '\u53c1', '\u8086', '\u4f0d', '\u9646', '\u67d2', '\u634c', '\u7396']
// 拾 \u62fe 佰 \u4f70 仟 \u4edf
const cnIntRadice = ['', '\u62fe', '\u4f70', '\u4edf']
// 万 \u4e07 亿 \u4ebf 兆 \u5146
const cnIntUnits = ['', '\u4e07', '\u4ebf', '兆']
// 角 \u89d2 分 \u5206 厘 \u5398 毫 \u6beb
const cnDecUnits = ['\u89d2', '\u5206', '\u5398', '\u6beb']
const cnInteger = '\u6574' // 整 \u6574
const cnIntLast = '\u5143' // 元 \u5143
const cnNegative = '\u8d1f' // 负
// Maximum number
const maxNum = 999999999999999.9999
export default function(number) {
let negative
// Integral part
let integerNum
// Decimal part
let decimalNum
// Capital number
let capitalStr = ''
let parts
/* istanbul ignore if */
if (number === '') {
return ''
}
number = parseFloat(number)
if (number < 0) {
negative = true
number = Math.abs(number)
}
/* istanbul ignore if */
if (number >= maxNum) {
return ''
}
/* istanbul ignore if */
if (number === 0) {
capitalStr = cnNums[0] + cnIntLast + cnInteger
return capitalStr
}
// Convert to String
number += ''
if (number.indexOf('.') === -1) {
integerNum = number
decimalNum = ''
} else {
parts = number.split('.')
integerNum = parts[0]
decimalNum = parts[1].substr(0, 4)
}
// Convert integer part
if (parseInt(integerNum, 10) > 0) {
let zeroCount = 0
for (let i = 0, IntLen = integerNum.length; i < IntLen; i++) {
const n = integerNum.substr(i, 1)
const p = IntLen - i - 1
const q = p / 4
const m = p % 4
if (n === '0') {
zeroCount++
} else {
if (zeroCount > 0) {
capitalStr += cnNums[0]
}
zeroCount = 0
capitalStr += cnNums[parseInt(n)] + cnIntRadice[m]
}
if (m === 0 && zeroCount < 4) {
capitalStr += cnIntUnits[q]
}
}
capitalStr += cnIntLast
}
// Convert decimal part
if (decimalNum !== '') {
for (let i = 0, decLen = decimalNum.length; i < decLen; i++) {
const n = decimalNum.substr(i, 1)
if (n !== '0') {
capitalStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
/* istanbul ignore if */
if (capitalStr === '') {
capitalStr += cnNums[0] + cnIntLast + cnInteger
} else if (decimalNum === '') {
capitalStr += cnInteger
}
if (negative) {
capitalStr = `${cnNegative}${capitalStr}`
}
return capitalStr
}