深入了解JavaScript数字类型(Number)

大多数编程语言都以某种形式进行数字操作。

在JavaScript中,数字也是最基本的对象。

这次,我将解释JavaScript处理的数字类型,以及如何处理这些数字。

数字类型(Number)

JavaScript的数字类型在使用typeof运算符检查类型时被标记为“number”。

console.log(typeof 3); // "number"

字符串类型有时也称为数字文字。

//什么是文字?

*可直接存储在数据类型中的值

*数字、字符串、真伪值、空值等

JavaScript处理的所有数字类型都表示为64位浮点数。

尽管整数和小数看起来不同,但它们都被视为 64 位浮点数。

这听起来可能有点困难,但简单来说,即使在处理整数时,计算也是在内部使用小数完成的。

下面看起来是在处理整数,但处理系统只是这样显示而已,实际上是在处理“1.0”和“2.0”等小数。

let number1 = 1;
let number2 = 2;
console.log(number1 + number2); // 3

虽然许多其他编程语言将整数和小数区分为单独的类型,但 JavaScript 的独特之处在于它将整数和小数都视为相同的数字类型。

IEEE754双精度浮点数

虽然你已经知道JavaScript的数值都是小数,但是你可能对64位的浮点数还不太了解。

更详细地说64位浮点数的话,JavaScript数字类型是IEEE754双精度浮点数。这是一种指定如何在64位范围内表示少数字符的格式。

请看下面的少数计算。

console.log(0.1 + 0.2); // 0.30000000000000004

如果简单地用心算或计算器进行计算,应该是0.3,但是JavaScript的计算结果是0.30000000000000004。

在计算机上,0.1和0.2分别是坏数,是强行套用在计算机上能表现的近似值上的结果。

并不完全是0.1或0.2,而是0.1000000.....、0.2000000.....。

从这些行为可以看出,用64位的数据量来正确表示数值是有限的。

因为这是IEEE754倍精度浮点数的规范,是无法避免的行为,要了解JavaScript的数字类型,了解这些行为的可能性也很重要。

//要点

JavaScript的数字类型不区分整数和少数,全部用IEEE754双精度浮点数来表示

64位的数据量是有限的,数值的计算可能会有偏差。

*不适合计算器应用程序等要求精确小数点数的应用程序开发

深入了解JavaScript数字类型(Number)

如何处理数字

既然我们已经掌握了数字类型的特点,那么我们来看看如何处理数字。

使用整数文字

整数文字可以用四种不同的方式表示:

十进制数 十六进制 八进制 二进制数
简单的数字 颜色和编码字符 文件权限 位运算
仅使用 0 到 9 的数字 以 0x 开头的数字 0o开头的数字 以 0b 开头的数字

首先,仅用数字 0 到 9 编写的数字被视为十进制数。

十进制数是日常生活中最常用的数字。

console.log(1); // 1
console.log(100); // 100
console.log(255); // 255

以“0x”开头的数字被识别为十六进制数字。

它被广泛视为指示颜色或编码字符的字符。

console.log(0xff); // 255
// 大小写相同
console.log(0xFF); // 255

八进制和二进制数较少用于文件权限和位运算。

八进制数由以“0o”开头的数字表示,二进制数由以“0b”开头的数字表示。

console.log(0o377); // 255八进制
console.log(0b11111111); // 255二进制

使用浮点数

浮点数有两种表示方法。

直接记录包含点的数值

只要将想要显示的数值原封不动地记录下来就可以了,所以并不难。

console.log(3.14); // 3.14
// 从0开始的浮点数可以省略0
console.log(.123); // 0.123

通过添加e或E,可以指定0的个数。

console.log(7.2e5); // 7.2 * 100000 → 720000

console.log(3e5); // 300000
// e和E意思相同
console.log(3E5); // 300000

写位数大的数字时

比如你写一亿,你可以简单的写成这样:

const number = 100000000;
console.log(number); // 100000000;

但是,位数越大,越有可能写错或读错。

在这种情况下,如果使用下划线分隔数字,则更容易理解。

const number = 100_000_000;
console.log(number); // 100000000

您还可以通过使用 e 或 E 来省略 0 的位数。

const number = 1e8;
console.log(number); // 100000000

将数字转换为字符串 (toString)

toString是将目标数字用指定的记数法转换成字符串的方法。

number.toString(记数法);

可以用2进制到36进制的记数法来表达。

默认是10进制,这种情况下可以省略。

let number = 50;

console.log(number.toString()); // "50"
console.log(number.toString(16)); // "32"
console.log(number.toString(8)); // "62"
console.log(number.toString(2)); // "110010"
console.log(number.toString(36)); // "1e"

当然,不要忘记,你不仅仅是将数值转换为指定的数字系统,而且是“将数值转换为字符串”。

let number = 50;

console.log(number.toString() === 50); // false
console.log(number.toString() === '50'); // true

此外,当对数字使用直接toString方法时,数字必须用括号括起来或以空格结尾。

console.log(50.toString()); // 错误

console.log((50).toString()); // "50"
console.log(50 .toString()); // "50"

结语

使用数值的机会很多,除了这里介绍的方法之外,还有各种操作方法。

如果您记住了基础知识,您将能够处理应用计算并获得数值,所以让我们牢牢记住这些要点。