// 千分位无小数部分functionsetThousandsMarkNoDecimal(num){// console.log('num????', num, typeof num)if(!num)return num;let fu =false;if(num.toString().includes('-')){
fu =true;
num =Number(num.toString().substr(1));}// num = Math.trunc(num); // 保留整数部分
num = num.toFixed(2);// 保留整数部分let str = num.toString();// 数字转字符串let str2 =null;// 如果带小数点if(str.indexOf('.')!==-1){// 带小数点只须要解决小数点右边的const strArr = str.split('.');// 依据小数点切割字符串
str = strArr[0];// 小数点右边
str2 = strArr[1];// 小数点左边//如12345.678 str=12345,str2=678}let result ='';// 后果while(str.length >3){// while循环 字符串长度大于3就得增加千分位// 切割法 ,从后往前切割字符串 ??
result =','+ str.slice(str.length -3, str.length)+ result;// 切割str最初三位,用逗号拼接 比方12345 切割为 ,345// 用result接管,并拼接上一次循环失去的result
str = str.slice(0, str.length -3);// str字符串剥离下面切割的后三位,比方 12345 剥离成 12}if(str.length <=3&& str.length >0){// 长度小于等于3 且长度大于0,间接拼接到result// 为什么能够等于3 因为下面result 拼接时候在后面带上了‘,’// 相当于123456 上一步解决完之后 result=',456' str='123'
result = str + result;}// 最初判断是否带小数点(str2是小数点左边的数字)// 如果带了小数点就拼接小数点左边的str2 ??
str2 ?(result = result +'.'+ str2):'';
result = fu ?'-'+ result : result;return result ||0;}
/**
* 保留两位小数位
* @param x "11111.1111" 111
* @returns 11111.11 111.00
*/constreserveFloat=(x)=>{
x = x.replace(/[^\d.]/g,'');//清除"数字"和"."以外的字符
x = x.replace(/^\./g,'');//验证第一个字符是数字而不是
x = x.replace(/\.{2,}/g,'.');//只保留第一个. 清除多余的
x = x.replace('.','$#$').replace(/\./g,'').replace('$#$','.');
x = x.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数var s = x.toString().split('.');if(s.length ==1){
x = x.toString()+'.00';return x;}if(s.length >1){if(s[1].length <2){
x = x.toString()+'0';}return x;}return x;};