Javascript 小数点保留

超过4位截取保留4位,不足4位保留原位数不补0

  1. 保留4位小数
var number = 12.3321432;
number = String(number).replace(/^(.*\..{4}).*$/,"$1");
number = Number(number); // number = 12.3321
  1. 保留2位小数
var reg = /^(.*\..{2}).*$/;
var number2 = 12.3;
number2 = String(number2).replace(reg ,"$1");
number2 = Number(number2); // number2 = 12.3  不足保留位数不补0

超过4位截取保留4位,不足4位补足0

getFloat = function(number, n) {
    
    
	n = n ? parseInt(n) : 0;
	if(n <= 0) {
    
    
		return Math.round(number);
	}
	number = Math.round(number * Math.pow(10, n)) / Math.pow(10, n); //四舍五入
	number = Number(number).toFixed(n); //补足位数
	return number;
};
console.log(getFloat('0', 4)); //0.0000
console.log(getFloat('2.08', 4)); //2.0800
console.log(getFloat('2.08500', 4)); //2.0850
console.log(getFloat('2.08996', 4)); //2.0900
console.log(getFloat('2.08994', 4)); //2.0899

toFixed()方法

var a =123.456789;
alert(a.toFixed(4));// 四舍五入保留四位小数

var num1 = (5/3).toFixed(2);  // 1.67
var num2 = (4).toFixed(2);  // 4.00
var num3 = (0.015).toFixed(2);  // 0.01
var num4 = (0.025).toFixed(2);  // 0.03

需注意,保留两位小数,将数值类型的数据改变成了字符串类型

Math.floor()向下取整

  let numBoolean = Math.floor((this.editFormData.amount / this.thresholdYuan) * 10000) / 10000 >= 0.005

自定义方法进行取整

//保留n位小数
function roundFun(value, n) {
    
    
  return Math.round(value*Math.pow(10,n))/Math.pow(10,n);
}

var num1 = roundFun(5/3, 2);  // 1.67
var num2 = roundFun(4, 2);  // 4
var num3 = roundFun(0.015, 2);  // 0.02
var num4 = roundFun(0.025, 2);  // 0.03
//保留n位小数并格式化输出(不足的部分补0)
var fomatFloat = function(value, n) {
    
    
    var f = Math.round(value*Math.pow(10,n))/Math.pow(10,n);
    var s = f.toString();
    var rs = s.indexOf('.');   
    if (rs < 0) {
    
         
        s += '.';   
    } 
    for(var i = s.length - s.indexOf('.'); i <= n; i++){
    
    
      s += "0";
    }
    return s;
}
var num1 = fomatFloat(5/3, 2);  // 1.67
var num2 = fomatFloat(4, 2);  // 4.00
var num3 = fomatFloat(0.015, 2);  // 0.02
var num4 = fomatFloat(0.025, 2);  // 0.03

猜你喜欢

转载自blog.csdn.net/qq_53810245/article/details/130832580