javascript 2/8/10/16进制数字

2 阅读2分钟

在 JavaScript 中,数字可以用不同的进制表示,包括二进制、八进制、十进制和十六进制。每种进制都有特定的表示方法和功能。下面是对 JavaScript 中 N 进制数字的详细介绍:

1. 二进制(Base 2)

二进制表示法使用 0b 或 0B 前缀。二进制数只使用 0 和 1

javascript
let binary = 0b1010; // 二进制10,十进制为10  
console.log(binary); // 输出: 10  

2. 八进制(Base 8)

在 JavaScript 中,八进制数可以使用 0o 或 0O 前缀。八进制数只使用 0-7 的数字。

javascript
let octal = 0o12; // 八进制12,十进制为10  
console.log(octal); // 输出: 10  

3. 十进制(Base 10)

十进制是常用的数字表示法,直接写数字即可。此进制中可以使用 0-9 的所有数字。

javascript
let decimal = 10; // 十进制10  
console.log(decimal); // 输出: 10  

4. 十六进制(Base 16)

十六进制数使用 0x 或 0X 前缀,并使用数字 0-9 和字母 A-F(或 a-f)表示。十六进制通常用于表示颜色、内存地址等。

javascript
let hexadecimal = 0xA; // 十六进制A,十进制为10  
console.log(hexadecimal); // 输出: 10  

5. 转换不同进制的数字

可以使用 Number 对象的方法将字符串转换为不同进制的数字。例如,parseInt 函数可将字符串解析为指定进制的整数:

javascript
let numFromBinary = parseInt("1010", 2); // 将二进制字符串转换为十进制  
console.log(numFromBinary); // 输出: 10  

let numFromOctal = parseInt("12", 8); // 将八进制字符串转换为十进制  
console.log(numFromOctal); // 输出: 10  

let numFromHex = parseInt("A", 16); // 将十六进制字符串转换为十进制  
console.log(numFromHex); // 输出: 10  

6. 一个经典的问题

['1','2','3','4','5','6','7','8','9'].map(parseInt)
// 它的输出是  ['1','2','3','4','5','6','7','8','9'].map(parseInt)

这个输出的原因是因为Array.prototype.map 方法 与 Number.parseInt 方法的特性造成的

7.关于浮点数的另外一个经典问题0.1+0.2 !== 0.3