price.js
2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* 处理数字
* @param num 输入的数字
* @param type 过滤的类型 1.正整数且可以为0 2.正数且可以为0
* @param fixedNum 保留多少位小数 如果type为2,则fixedNum为保留多少位小数
* @param numType 是否可以输入负数或负小数
* @private
*/
export function _handleNum(num, type, fixedNum, numType = 1) {
if (num != null && num != undefined && num != "" && num != "0") {
var reg = '';
switch (type) {
//匹配正整数
case 1:
var t = num[0]
reg = /[^\d]/g;
//先过滤非数字包括小数点
num = num.replace(reg, '');
//取得正整数,去除头部为0的数(如002223)
num = num.replace(/^0{0,}/, '');
if (numType && t == '-') {
num = '-' + num
}
break;
//匹配小数点,保留多少位
case 2:
var t = num[0]
reg = /[^\d\.]/g;
//先过滤非数字和小数点
num = num.replace(reg, '');
if (num[0] == '.') {
num = '0.'
}
//获取第一个小数点出现的位置
var index = num.indexOf(".");
if (index != -1) {
//过滤所有小数点
num = num.replace(/\./g, '');
//组合数字,AfterDotNum 为小数点钱数字
var beforeDotNum = num.substring(0, index)
//如果为小数并且小数点前有两位数字,取得小数点前全部位数,去除头部为0的数(如002223)
if (beforeDotNum.length > 1) {
beforeDotNum = beforeDotNum.replace(/^0{0,1}/, '');
}
//组合数字,AfterDotNum 为小数点后数字
var AfterDotNum = num.substring(index, num.length);
num = beforeDotNum + "." + AfterDotNum;
//获取最终结果,如果最终的位数小于fixedNum
if (fixedNum && AfterDotNum.length > fixedNum) {
AfterDotNum = AfterDotNum.substr(0, fixedNum);
var number = num.substring(0, index)
num = number + "." + AfterDotNum;
}
} else {
//取得正整数,去除头部为0的数(如002223)
num = num.replace(/^0{0,1}/, '');
}
if (numType && t == '-') {
num = '-' + num
}
break;
}
}
return num;
}