其他分享
首页 > 其他分享> > 输入金额控制,保留两位小数

输入金额控制,保留两位小数

作者:互联网

 

/**  * 输入金额控制  * 输入的金额 amount  * 精确小数点前n位(不传n位,默认为小数点前6位,6位为十万元) num  * 金额控制小数点后默认2位,可随需求进行更改  */ function amountRestrict(amount, num) {     // 三元运算符 是否传入小数点前n位 没有默认赋值6位     let digitNum = num ? num : 6     // 第一步先转换传入的金额为字符串类型     let sumAmount = amount.toString();     //第一位输入的 .     if (sumAmount.indexOf('.') == 0) {         sumAmount = 0 + sumAmount; //则输出 0.         return sumAmount; // 第一位输入的就是点 后面无需执行     }     //如果输入的0.00     if (sumAmount == '0.00') {         sumAmount = '0.01'; //则输出0.01         return sumAmount; // 输入的是0.00 直接输出0.01 后面无需执行     }     // 正则判断金额     sumAmount = sumAmount.replace(/[^\d.]/g, ""); // 清除 数字 和 . 以外的字符     sumAmount = sumAmount.replace(/\.{2,}/g, "."); // 只保留第一个. 清除多余的     sumAmount = sumAmount.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 删除多余的 .     sumAmount = sumAmount.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数     // 判断金额中是否有小数点 并且 金额 不为空     if (sumAmount.indexOf(".") < 0 && sumAmount != "") {         sumAmount = parseFloat(sumAmount.slice(0, digitNum)); // 没有小数点并且金额不为空 切割 0 至 digitNum 位 并且输出数字类型     } else { // 有小数点         // 判断金额第0位至小数点的位置是否为0 金额的第一位是否为 0  此意为输入完成后又点击到第一位输入0         if (sumAmount.slice(0, sumAmount.indexOf(".")) != '0' && sumAmount.slice(0, 1) == '0') {             sumAmount = sumAmount.slice(1, sumAmount.length); // 进入这说明 第0位数字为0 那就从1位截取到最后         }         // 判断小数点的位置是否 大于 digitNum 位         if (sumAmount.indexOf(".") > digitNum) {             // 如果大于digitNum位就切割0至digitNum位,拼接小数点后两位 并且输出数字类型             sumAmount = parseFloat(sumAmount.slice(0, digitNum) + sumAmount.slice(sumAmount.indexOf("."), sumAmount.length));         }     }     return sumAmount; }

标签:两位,digitNum,sumAmount,小数点,replace,slice,输入,小数
来源: https://www.cnblogs.com/bkings/p/15752487.html