Node.js 数字

JavaScript中的所有数字都是64位IEEE 754双精度浮点数,都具有相同的浮点数类型。算术运算(+, - ,*,/,%)对数字起作用。

  1. var myData = 1;
  2. var myValue = 2;
  3. console.log(myData + 1);
  4. console.log(myData / myValue);
  5. console.log(myData * myValue);
  6. console.log(myData - myValue);
  7. console.log(myData % 2);

上面的代码生成以下结果。

算术运算结果

例子

JavaScript中的数字类型与其他语言中的整数数据类型非常类似:

  1. console.log(1024 * 1024);

上面的代码生成以下结果。

数字类型结果

然而,使用数字类型的棘手部分是,对于许多数字值,它是一个实际数的近似值。

例如:

  1. console.log(0.1 + 0.2);

上面的代码生成以下结果。

近似值

当执行浮点数学运算时,我们不能操作任意实数和期望精确值:

  1. console.log(1 - 0.3 + 0.1 == 0.8);

上面的代码生成以下结果。

浮点运算结果

注意1

在JavaScript中将数字除以0会返回值Infinity或-Infinity而不是生成运行时异常:

  1. console.log(5 / 0);
  2. console.log(-5 / 0);

上面的代码生成以下结果。

除以0的结果

Infinity和-Infinity是我们可以在JavaScript中比较的有效值:

  1. var x = 10, y = 0;
  2. console.log(x / y == Infinity);

上面的代码生成以下结果。

Node.js 数字 - 图6

注意2

你可以使用函数parseInt和parseFloat将字符串转换为数字:

  1. console.log(parseInt("32"));
  2. console.log(parseFloat("8.24"));
  3. console.log(parseInt("234.12345"));
  4. console.log(parseFloat("10"));

上面的代码生成以下结果。

字符串转换结果

注意3

如果我们为这些函数提供不可解析的值,它们返回特殊值NaN:

  1. console.log(parseInt("cat"));
  2. console.log(parseFloat("css"));

上面的代码生成以下结果。

NaN值

要测试NaN,请使用isNaN函数:

  1. isNaN(parseInt("cat"));

注意4

要测试给定数是否是有效的有限数,请使用 isFinite 函数:

  1. console.log(isFinite(10/5));
  2. console.log(isFinite(10/0));
  3. console.log(isFinite(parseFloat("css")));

上面的代码生成以下结果。

isFinite函数结果