JavaScript中的数字类型
JavaScript 语言中只有一种数值类型,就是 number 类型,这个类型的值可以选择带小数点或者不带小数点。不像其他语言中还分成了整型、浮点型、长整型、单精度、双精度等等。
数字类型的使用
我们在声明数字类型时,可以带小数点,也可以不带,或者使用科学计数法。
示例:
下面是我们声明的两个 number
类型的变量:
var a = 7;
var b = 1.25;
在声明数字类型的变量时,不需要加引号,这就是数字类型和字符串类型的区别,例如我们看下面这两个变量:
var num1 = 100;
var num2 = '100';
其中变量 num1
是数字类型, 变量 num2
是字符串类型。JavaScript 语言中给我们提供了一个 typeof
方法,用来查看变量的类型,例如:
var num1 = 100;
var num2 = '100';
console.log(typeof(num1)); // number
console.log(typeof(num2)); // string
某些时候,比较大或比较小且位数较多的数字,可以使用科学计数法来写,避免浪费很多空间和时间。
示例:
用科学记数法表示数时,不改变数的符号,只是改变数的书写形式而已:
var c = 156e4;
var d = 325e-3;
console.log(c, typeof(c)); // 1560000 "number"
console.log(d, typeof(d)); // 0.325 "number"
数字类型的精度
Number 类型的值,整数最多会被精确到15位,而小数最多17位,但是浮点的算数并不总是 100% 精准。
示例:
var a = 111111111111111;
var b = 0.9 + 0.69;
console.log(a); // 111111111111111
console.log(b); // 1.5899999999999999
如果我们想让小数的计算结果更精准一点,可以使用乘除法来解决这个问题:
var a = (0.3*10 + 0.6*10) / 10;
console.log(a); // 0.
数字与字符串类型相加
与其他编程语言还有一个不同在于,JavaScript语言中数字与字符串类型可以直接通过 +
加号相加,结果也会输出一个字符串。
如果你学过其他编程语言,例如Python等,你就会知道在其他编程语言中,不同类型的值是不能相加的,除非进行类型转换,但是 JavaScript 中可以哟。
示例:
数字与数字相加:
var a = 7;
var b = 96;
console.log(a + b); // 103
console.log(typeof(a + b)); // number
字符串与字符串相加:
var c = "55";
var d = "77";
console.log(c + d); // 5577
console.log(typeof(c + d)); // string
数字与字符串相加:
var a = 7;
var c = "55";
console.log(a + c); // 755
console.log(typeof(a + c)); // string
从上述三个示例的输出结果,我们就能看出,数字与字符串两个不同类型变量,使用 加号+
连接,最终的结果为 string 类型。
非数值NaN
某些时候,当你对数据类型使用不恰当时,可能会得到 NaN,这是属于 JavaScript 的保留字,指示某个数不是合法数。
示例:
那么什么数是不合法的呢,例如下面这些:
var a = 5 * "xkd";
var b = 21 / "xkd";
console.log(a); // NaN
console.log(b); // NaN
使用数字与内容为英文字母的字符串进行乘除,最终结果将会得到 NaN。
注意,假如字符串中只包含数值,输出的结果为 number 类型:
var a = 9 * "3";
console.log(a); // 27
console.log(typeof(a)); // number
那我们并不确定哪个数是合法的,哪个数是不合法的,要怎么办? 不用担心,JavaScript 语言中给我们提供了一个函数 isNaN()
来判断一个值是否是合法数。
示例:
var a = 9 * "9xkd";
var b = 9 * "3";
console.log(a); // NaN
console.log(b); // 27
console.log(isNaN(a)); // true
console.log(isNaN(b)); // false
结果返回 true
则表示变量 a
是一个非数值,返回 false 则表示变量 b
是一个合法数。
动手练习
- 请问下列代码的输出结果分别是什么?
var n1 = 100;
var n1;
var n2 = 200;
var n1, n3 = 300;
var n2, n4 = 400;
console.log(n1);
console.log(n2);
console.log(n3);
console.log(n4);
2.声明一个数字类型的变量 a,和一个字符串类型的变量 b,使用加号+
连接这两个类型的变量,并将之赋值给变量 c,最后输出这个变量 c 是否是合法数?(变量的值自定义即可)。
更多可以查看:https://www.9xkd.com/