前言
JavaScript 不区分整数和浮点数,只有一种Number 数字类型。
Number 数字类型
小数点后面的.0的数字会自动省略
var a = 12; // 12
var b = 12.0; // 12
var c = 12.00; // 12
var d = 12.2; // 12.2
var e = 12.20; // 12.2
极大或极小的数字可通过科学(指数)计数法来写:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
new Number()
定义数字对象
var x = 12;
var y = new Number(12);
console.log(typeof x); // number
console.log(typeof y); // object
x 和 y的值都是12,用==
判断是相等的。但是===
判断是false, 因为数据类型不一样,一个是number类型,一个是object类型
var x = 12;
var y = new Number(12);
console.log(x == y); // true
console.log(x === y); // false
运算
纯数字可以用加减乘除等运算符
var a = 2;
var b = 3;
var c1 = a + b; // 5
var c2 = a - b; // -1
var c3 = a * b; // 6
var c4 = a / b; // 0.6666666666666666
var c5 = a ** b; // 8
数字和字符串
2个纯数字的字符串相加,会当字符串拼接
var a = 3;
var b = 4;
var x = a+b; // 7
// 两个纯数字字符串相加
var c = '3';
var d = '4';
var y = c + d; // 34
数字和字符串混加不会报错,会拼接成新的字符串
// 数字加字符串
var x = 10;
var y = "20";
var z = x + y; // 1020(字符串)
console.log(z) ;
// 字符串加数字
var a = "10";
var b = 20;
var c = a + b ; // 1020(字符串)
console.log(c) ;
如下字符串加2个数字
var x = 10;
var y = 20;
var z = "The result is: " + x + y; // The result is:1020
如果2个数字在前面,那么结果会不一样
var x = 10;
var y = 20;
var z = "hello";
var result = x + y + z; //30hello
因为JavaScript是从左往右计算,会先计算x+y的值得到30,再拼接hello得到30hello
纯数字的字符串做其它运算的时候,会当数字处理(加法运算当字符串处理)
var x = "100";
var y = "10";
var z = x / y; // z 将是 10
console.log(z)
乘法运算
var x = "100";
var y = "10";
var z = x * y; // z 将是 1000
减法运算
var x = "100";
var y = "10";
var z = x - y; // z 将是 90
需注意的是,只有加法运算,数字类的字符串会被当字符串处理。
NaN 非数值
数字里面有个特殊的值NaN,它表示是一个非数字.
var x = 100 / "a"; // NaN
函数 isNaN() 判断某个值是否是数字类型
var x = 100 / "a"; // NaN
console.log(x); // NaN
console.log(isNaN(x)); // true
NaN和其它数字运算,得到的结果也会是NaN
var x = NaN;
var y = 20;
var z = x+y; // NaN
console.log(z); // NaN
console.log(typeof z); // number
NaN也是一个number类型。
Infinity 无穷大
Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。
一个数除以0,会得到无穷大
var x = 2 / 0; // Infinity
var y = -2 / 0; // -Infinity
console.log(x); // Infinity
console.log(y); // -Infinity
console.log(typeof x); // number
console.log(typeof y); // number
toString() 转字符串
数字类型转字符串类型
var x = 20;
var y = x.toString();
console.log(y); // number
console.log(typeof x); // string
console.log(typeof y); // string
toString() 方法把数输出为十六进制、八进制或二进制
var myNumber = 128;
myNumber.toString(16); // 返回 80
myNumber.toString(8); // 返回 200
myNumber.toString(2); // 返回 10000000
toFixed() 方法
toFixed() 方法用于保留几位小数,非常适合处理金额的问题,比如10.00
这种数字,会被自动变成10
,但是我们希望保留2位小数
var x = 10.00;
console.log(x); // 10
console.log(x.toFixed(2)) // 10.00
在保留小数点后面几位四舍五入的时候也会用到
var x = 10.0537;
console.log(x.toFixed(0)) // 10
console.log(x.toFixed(1)) // 10.1
console.log(x.toFixed(2)) // 10.05
console.log(x.toFixed(3)) // 10.054
console.log(x.toFixed(4)) // 10.0537
console.log(x.toFixed(5)) // 10.05370
toPrecision() 方法
toPrecision(number) 方法返回字符串,返回一个字符串,表示指定精度的数字。参数number的范围是1-100
var x = 10.0537;
console.log(x.toPrecision(1)) // 1e+1
console.log(x.toPrecision(2)) // 10
console.log(x.toPrecision(3)) // 10.1
console.log(x.toPrecision(4)) // 10.05
console.log(x.toPrecision(5)) // 10.054
把变量转换为数值
这三种 JavaScript 方法可用于将变量转换为数字:
- Number() 方法
- parseInt() 方法
- parseFloat() 方法
Number() 可用于把 JavaScript 变量转换为数值:
x = true;
Number(x); // 返回 1
x = false;
Number(x); // 返回 0
x = new Date();
Number(x); // 返回 1404568027739
x = "10"
Number(x); // 返回 10
x = "10 20"
Number(x); // 返回 NaN
Number(new Date("2019-04-15")); // 返回 1506729600000
parseInt() 方法
parseInt() 解析一段字符串并返回数值。允许空格。只返回首个数字
parseInt("10"); // 返回 10
parseInt("10.33"); // 返回 10
parseInt("10 20 30"); // 返回 10
parseInt("10 years"); // 返回 10
parseInt("years 10"); // 返回 NaN
parseFloat() 方法
parseFloat() 解析一段字符串并返回数值。允许空格。只返回首个数字
parseFloat("10"); // 返回 10
parseFloat("10.33"); // 返回 10.33
parseFloat("10 20 30"); // 返回 10
parseFloat("10 years"); // 返回 10
parseFloat("years 10"); // 返回 NaN