1、强制保留n位小数
//强制保留n位小数,如:2保留两位小数,会在2后面小数位补上两个0,即2.00
function toDecimal(x, n) {
if(!x) return '';
if(!n) n = 2;
var f = parseFloat(x);
if (isNaN(f)) {
return '';
}
var f = Math.round(x * Math.pow(10,n)) / Math.pow(10,n);
var s = f.toString();
var rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + n) {
s += '0';
}
return s;
}
2、四则运算(解决丢失精度问题)
// num1 num2传入两个值 symbol +-*/符号
function amend(num1,num2,symbol){
var str1=num1.toString(),str2=num2.toString(),result,str1Length,str2Length
// 解决整数没有小数点方法
try {str1Length= str1.split('.')[1].length} catch (error) {str1Length=0}
try {str2Length= str2.split('.')[1].length} catch (error) {str2Length=0}
var step=Math.pow(10,Math.max(str1Length,str2Length))
// 可以通过先乘10的倍数,然后再除
console.log(step);
switch (symbol) {
case "+":
result= (num1*step+num2*step)/step
break;
case "-":
result= (num1*step-num2*step)/step
break;
case "*":
result= ((num1*step)*(num2*step)) / step/step
break;
case "/":
result= (num1*step)/(num2*step)
break;
default:
break;
}
return result
}
console.log(amend(0.1,0.2,"+"));
3、限制input只能输入整数或浮点数
<input type="text" oninput="inputNumber(this);" />
// 限制只能输入整数或浮点数
function inputNumber(e) {
e.value = e.value.replace(/[^\d*\.\d*]/g, '');
}