2.03.02数字的进制与数字的一些方法
1.数字的进制
- 概念:在JavaScript中,Number数据类型可以使用四种数字进制:十进制,二进制,八进制和十六进制。
- 十进制数字
- 注意:十进制可以以0开头,后面接其他十进制数字,但是假如下一个接的十进制数字小于8,那么该数字将会被当做八进制处理。一般不以0开头的数字都当做是十进制。
var a=0777;
console.log(" a*1 => " + a*1); //a*1 => 511
a=0888;
console.log(" a*1 => " + a*1); // a*1 => 888
- 二进制数字
- 二进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母B(0b或者是0B)。 假如0b后面的数字不是0或者1,那么就会提示这样的语法错误: “Missing binary digits after 0b(0b之后缺失二有效的二进制数据)”。
var a=0b10;
console.log(" a*1 => " + a*1); // a*1 => 2
a=0B1;
console.log(" a*1 => " + a*1); // a*1 => 1
- 八进制数字
- 八进制数字语法是以0为开头的。假如0后面的数字不在0到7的范围内,该数字将会被转换成十进制数字。
var n = 0755; // 493
var m = 0644; // 420
- 十六进制数字
- 十六进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母X(0x或者是0X)。假如0x后面的数字超出规定范围(0123456789ABCDEF),那么就会提示这样的语法错误(SyntaxError):“Identifier starts immediately after numeric literal”.
var a=0x10;
console.log(" a*1 => " + a*1); // a*1 => 16
a=0X1;
console.log(" a*1 => " + a*1); // a*1 => 1
2.数字的方法
1. 常用的一些数字方法
- Number.parseInt()
- 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt()作用一致。
- 语法: Number.parseInt(string[, radix])
//解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
// 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38
Number.parseInt('123', 5)
Number.parseInt('0xF', 16); // 15
Number.parseInt("546", 2); //NaN 除了“0、1”外,其它数字都不是有效二进制数字
注意:如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
1. 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
2. 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
3. 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
- Number.isNaN()
- 判断传递的值是否为 NaN. 全局方法 isNaN()的更强大版本。
因为 NaN == NaN 和NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。
和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true。
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0) // true
// 下面这几个如果使用全局的 isNaN() 时,会返回 true。
Number.isNaN("NaN"); // false,字符串 "NaN" 不会被隐式转换成数字 NaN。
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false
- Number.parseFloat()
- 把字符串参数解析成浮点数,如果无法被解析成浮点数,则返回NaN,和全局方法 parseFloat() 作用一致。
- 如果 parseFloat 在解析过程中遇到了正号(+)、负号(-)、数字(0-9)、小数点(.)、 或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符, 返回当前已经解析到的浮点数。
- 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)。
- 参数首位和末位的空白符会被忽略。
- 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
Number.parseFloat('123') // 123
parseFloat('3.14'); // 3.14
parseFloat(' 3.14 '); // 3.14
parseFloat('314e-2'); // 3.14
parseFloat('0.0314E+2'); // 3.14
parseFloat('3.14some non-digit characters');// 3.14
parseFloat("FF2"); // NaN
2. 数字类型原型上的方法
var a = 123
// 这里看起来a是一个对象toFixed是他的属性方法,其实这个是通过Number对象的原型继承过来的方法
var b = a.toFixed(2)
console.log(b); //b="123.00"