| | |
| | | /** |
| | | * 数值转换为千分位格式 |
| | | * @param {Number|String} number - 传入的值 |
| | | * @param {String} decimalFormat - 处理小数的方式 - notRetain(不保留小数,没有小数时才生效),keepTwo(保留两位小数),keepThree(保留三位小数) |
| | | * @param {String} decimalFormat - 处理小数的方式 - notRetain(不保留小数,有小数时也会去掉小数位),keepTwo(保留两位小数),keepThree(保留三位小数) |
| | | * @return {string} |
| | | */ |
| | | static thousandFormat(number, decimalFormat = 'keepTwo') { |
| | |
| | | // 没有小数位 |
| | | if (!(num.indexOf('.') > -1)) { |
| | | needThousand = num.toString(); |
| | | if (decimalFormat === 'notRetain') { |
| | | decimals = ''; |
| | | } else if (decimalFormat === 'keepTwo') { |
| | | if (decimalFormat === 'keepTwo') { |
| | | decimals = '00'; |
| | | } else if (decimalFormat === 'keepThree') { |
| | | decimals = '000'; |
| | |
| | | let temp = ''; |
| | | // 对整数取余 |
| | | let remainder = len % 3; |
| | | decimals ? (temp = '.' + decimals) : temp; |
| | | if (decimals) { |
| | | temp = '.' + decimals; |
| | | } |
| | | if (remainder > 0) { |
| | | // 不是3的整数倍 |
| | | return ( |
| | |
| | | } |
| | | }; |
| | | } |
| | | /** |
| | | * 精确保留小数点几位数, 自动补零, 四舍五入 |
| | | * 修复 toFixed 四舍六入五讨论的问题 |
| | | * @param {Number|String} num 数值 |
| | | * @param {Number} [digit=0] 小数点后位数 |
| | | * @returns {String|NaN} |
| | | */ |
| | | static accFixed(num, digit = 0) { |
| | | const number = parseFloat(num); |
| | | if (isNaN(number)) { |
| | | return NaN; |
| | | } |
| | | if (number >= 0) { |
| | | return ( |
| | | Math.round((number + Number.EPSILON) * Math.pow(10, digit)) / Math.pow(10, digit) |
| | | ).toFixed(digit); |
| | | } else { |
| | | return ( |
| | | '-' + |
| | | ( |
| | | Math.round((Math.abs(number) + Number.EPSILON) * Math.pow(10, digit)) / |
| | | Math.pow(10, digit) |
| | | ).toFixed(digit) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // h5 中,实现 rem 转换 px |