Number
1.parseFloat(Number),去除小数点后面多余的0,
let a = 21.1200
a = parseFloat(a)
console.log(a) //21.12
2.Number.toFixed() 方法可把 Number 四舍五入为指定小数位数的数字,当位数不足时以0补足。
let a = 21.12345678
a = a.toFixed(4)
console.log(a) //21.1235
如果小数点前有字母,会得到NaN,如果小数点后有字母,则会去掉字母和字母后面的部分
但是这个方法有一个问题,就是如果a=21.12345,然后取四位小数,结果会为21.1234
这里有一个说法,叫“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是最小的偶数) 。
在浮点数末尾≤4或者≥6的情况下的舍入没有争议,但当末尾正好等于5的情况下可谓混乱之极(与浏览器有关,同样的方法,在谷歌和IE上会有不同显示)。
总结:众所周知,遵循IEEE754数值格式的语言的浮点计算会出现精度损耗的通病,ES也并非独此一家,因此尽量不要进行某个特定浮点数值的测试,如:0.1+0.2;
解决方案:重写Number.prototype.toFixed()方法:
Number.prototype.toFixed=function (d) {
var s=this+"";
if(!d)d=0;
if(s.indexOf(".")==-1)s+=".";
s+=new Array(d+1).join("0");
if(new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+(d+1)+"})?)\\d*$").test(s)){
var s="0"+RegExp.$2,pm=RegExp.$1,a=RegExp.$3.length,b=true;
if(a==d+2){
a=s.match(/\d/g);
if(parseInt(a[a.length-1])>4){
for(var i=a.length-2;i>=0;i--){
a[i]=parseInt(a[i])+1;
if(a[i]==10){
a[i]=0;
b=i!=1;
}else break;
}
}
s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
}if(b)s=s.substr(1);
return (pm+s).replace(/\.$/,"");
}return this+"";
3.Number.isFinite(),检测一个数值是不是有限的,只有数字且是有限的才会返回true,否则一律是false
Number.isFinite(123); // true
Number.isFinite("123"); // false
Number.isFinite("sd"); // false
4.Number.isNaN(),检测一个数值是不是NaN,只有数字且是NaN的时候才会返回true,否则一律false
Number.isNaN(NaN); //true
Number.isNaN(123); //false
5.parseInt(),转化为整数
const a=parseInt('1.6668bb');
console.log(a); // 1
6.Number(),将给定值转化为数字,语法:Number(obj),返回转换后的数字,如果不能转为数字则返回NaN
7.Number.MAX_VALUE和Number.MIN_VALUE
console.log(Number.MAX_VALUE) //返回在 JavaScript 里所能表示的最大数值
console.log(Number.MIN_VALUE) //返回在 JavaScript 里所能表示的最小正值
8.Number.isInteger(),用来判断给定的参数是否为整数,语法:Number.isInteger(number),
console.log(Number.isInteger(1.2)); // false
console.log(Number.isInteger(2)); // true
注意这里前面要加Number
9.Number.isSafeInteger(),用来判断传入的参数值是否是一个“安全整数”。JavaScript 能够准确表示的整数范围在-2的53次方至2的53次方之间(不含两个端点),超过这个范围,无法精确表示这个值。ES6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1
// true
Number.MAX_SAFE_INTEGER === 9007199254740991
// true
Number.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER
// true
Number.MIN_SAFE_INTEGER === -9007199254740991
// true
Number.isSafeInteger(3) // true
Number.isSafeInteger(1.2) // false
Number.isSafeInteger(9007199254740990) // true
Number.isSafeInteger(9007199254740992) // false
10.Number.isNan(),用来判断传入的参数值是否是Nan
Number.isNaN(2); // false
Number.isNaN(NaN);// true
Number.isNaN(Infinity);// false
11.num.toString(),格式化一个number实例为字符串表示形式
console.log(124.456.toString());// '123.456'
12.保留小数点两位且不四舍五入的方法
let a = 1.123456;
let b = a.toFixed(3).toString().split('.'); //如果要保留两位小数的话toFixed的参数就为3,这样做是为了避免a的小数位不足以0补足
let c = b[1].substring(0,2); //改变最后一个参数可以改变保留位数
console.log(b[0] + '.' + c); //1.12
注:欢迎补充更正