数值转换
Number()函数基于如下规则转换
- 布尔值, true 转换为 1, false 转换为 0。
- 数值,直接返回。
- null ,返回 0。
- undefined ,返回 NaN 。
- 字符串:
- 如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。因此, Number("1") 返回 1, Number("123") 返回 123, Number("011") 返回 11(忽略前面的零)。
- 如果字符串包含有效的浮点值格式如 "1.1" ,则会转换为相应的浮点值(同样,忽略前面的零)。
- 如果字符串包含有效的十六进制格式如 "0xf" ,则会转换为与该十六进制值对应的十进制整数值。
- 如果是空字符串(不包含字符),则返回 0。
- 如果字符串包含除上述情况之外的其他字符,则返回 NaN 。
- 对象,调用 valueOf() 方法,并按照上述规则转换返回的值。如果转换结果是 NaN ,则调用 toString() 方法,再按照转换字符串的规则转换。
数字转其他进制
let num = 10;
console.log(num.toString()); // "10"
console.log(num.toString(2)); // "1010"
console.log(num.toString(8)); // "12"
console.log(num.toString(10)); // "10"
console.log(num.toString(16)); // "a"
==es6==
Number.EPSILON
ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示 1 与大于 1 的最小浮点数之间的差. Number.EPSILON实际上是 JavaScript 能够表示的最小精度。误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。
function equal(a,b) {
if (Math.abs(a-b)<Number.EPSILON) {
return true;
}else{
return false;
}
}
console.log(equal(0.1+0.2,0.3)); //true
console.log(0.1+0.2 === 0.3); //false
进制表示法
let b = 0b1010; //二进制
let o = 0o777;//八进制
let d = 100;//十进制
let x = 0xff;//十六进制
console.log(b); //10
console.log(o); //511
console.log(d); //100
console.log(x); //255
Number.isNaN()
//判断是否是NaN,不是数字为true,是数字结果为false
Number.isNaN() //boolean
Number.isFinite()
//用来检查一个数值是否为有限的(finite)
Number.isFinite(num) //boolean
Number.parseInt()
//整数转换
Number.parseInt(paramet) //Number
Number.parseFloat()
//浮点数转换
Number.parseFloat(paramet) //Number
Number.isInteger()
//用来判断一个数值是否为整数
Number.isInteger(paramet) //boolean
Number.isSafeInteger()
//则是用来判断一个整数是否落在这个范围之内
Number.isSafeInteger(testValue) //boolean
//安全整数范围为 -(253 - 1)到 253 - 1 之间的整数,包含 -(253 - 1)和 253 - 1。
number.toFixed()
//可把 Number 四舍五入为指定小数位数的数字
Number.toFixed(x) //Number
==es5==
Number.MAX_VALUE
//可表示的最大的数, 1.7976931348623157e+308
Number.MAX_VALUE
Number.MIN_VALUE
//可表示的最小的数, 5e-324
Number.MIN_VALUE
Number.NEGATIVE_INFINITY
//表示负无穷大
Number.NEGATIVE_INFINITY
Number.POSITIVE_INFINITY
//表示正无穷大
Number.POSITIVE_INFINITY
Number.MAX_SAFE_INTEGER
//整数最大值 9007199254740991,2^53
Number.MAX_SAFE_INTEGER
Number.MIN_SAFE_INTEGER
//整数最小值 -9007199254740991,-2^53
Number.MIN_SAFE_INTEGER
number.toString()
/*
二进制与2进1
八进制与8进1
十进制与10进1
十六进制与f进1
num.toString(radix)
参数值:radix
//10- 数字以十进制值显示,不传参数默认10进制
//2 - 数字以二进制值显示
//8 - 数字以八进制值显示
//16 - 数字以十六进制值显示
*/
//例子:字符转十六进制
let str = "我是中国人"
let s = ''
or (let i = 0; i < str.length; i++) {
s += str.charCodeAt(i).toString(16) + ','
}
//例子:十六进制转字符
s.split(',').forEach(item => {
if (item != "") {
String.fromCodePoint(Number.parseInt(item,16))
}
})