// 千位符
export const numFormat = (num) => {
num=num.toString().split("."); // 分隔小数点
var arr=num[0].split("").reverse(); // 转换成字符数组并且倒序排列
var res=[];
for(var i=0,len=arr.length;i<len;i++){
if(i%3===0&&i!==0){
res.push(","); // 添加分隔符
}
res.push(arr[i]);
}
res.reverse(); // 再次倒序成为正确的顺序
if(num[1]){ // 如果有小数的话添加小数部分
res=res.join("").concat("."+num[1]);
}else{
res=res.join("");
}
return res;
}
//浮点数乘法计算,用于转换整数
export const integer = (arg1, arg2) => {
let m = 0, s1 = arg1.toString(), s2 = arg2.toString();
m = (s1.split(".")[1] ? s1.split(".")[1].length : 0) + (s2.split(".")[1] ? s2.split(".")[1].length : 0)
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}
// 去除金额符号
export const integerReplace = (arg1) => {
if(arg1){
return arg1.toString().indexOf(',') !== -1 ? arg1.replace(new RegExp(/(,)/g), '') : arg1
}else{
return 0
}
}
// 浮点数计算
//
export const floatCalculation = (num1, str, num2, fage) => {
num1 = integerReplace(num1)
num2 = integerReplace(num2)
let reg = new RegExp(/^(\-|\+)?\d+(\.\d+)?$/);
if(!reg.test(Number(num1))){
num1 = 0
}
if(!reg.test(Number(num2))){
num2 = 0
}
let multiple = Math.pow(10,Math.max((String(num1).split(".")[1] || "").length, (String(num2).split(".")[1] || "").length))
switch (str) {
case '+':
return formatDecimalInfo((integer(num1, multiple) + integer(num2, multiple)) / multiple,2,fage)
case '-':
return formatDecimalInfo((integer(num1, multiple) - integer(num2, multiple)) / multiple,2,fage)
case '*':
return formatDecimalInfo(integer(num1, num2),2,fage)
case '/':
return formatDecimalInfo(integer(num1, multiple) / integer(num2, multiple),2,fage)
default:
return false
}
}
// 保留两位小数()
// fage ture 四舍五入 false 不舍五入
export const formatDecimalInfo = (num,decimal,fage) => {
if(!decimal&&decimal!=0){
decimal =2
}
if(fage){
return Number(num).toFixed(decimal)
}
num = num.toString()
let index = num.indexOf('.')
if (index !== -1) {
num = num.substring(0, decimal + index + 1)
} else {
num = num.substring(0)
}
return parseFloat(num).toFixed(decimal)
}
/**
* @description Decimal处理
* @param {*} decimal 金额
* @param {*} cent 要保留的小数位(Number)
*/
export const FormatDecimal = (decimal, cent) => {
// 获取次方 用于下方运算
let num = Math.pow(10, cent)
return Math.round(decimal * num) / num
}
09-09
1077
09-05
1315