(1)精度:
整数(不使用指数或科学计数法)会被精确到 15 位。
小数的最大数是 17 位,但是浮点的算数并不总是 100% 精准,使用乘除法可以解决:
var x = 0.2 + 0.1; // x 将是 0.30000000000000004
var x = (0.2 * 10 + 0.1 * 10) / 10; // x 将是 0.3
(2)数字和字符串相加
JavaScript 的加法和级联(concatenation)都使用 + 运算符。
数字用加法。字符串用级联。
JavaScript 从左向右进行编译:
数字+数字=数字
字符串+字符串=字符串
数字+字符串=(数字前字符串后的)字符串
字符串+数字=(字符串前数字后的)字符串
(3)数字字符串
JavaScript 字符串可以拥有数字内容,在所有数字运算中,JavaScript 会尝试将字符串转换为数字。但是遇到+
,就会级联。
var x = "100";
var y = "10";
var z = x / y; // z 将是 10
var z = x + y; // z 不会是 110(而是 10010)
(4)NaN - 非数值
NaN
属于 JavaScript 保留词,指示某个数不是合法数。
NaN
是数,typeof NaN
返回 number
。
尝试用一个非数字字符串进行除法会得到 NaN
(Not a Number)。
可使用全局 JavaScript 函数 isNaN()
来确定某个值是否是数
NaN+数字=NaN
NaN+字符串=(NaN前字符串后的)字符串
(5)Infinity
Infinity
(或 -Infinity
)是 JavaScript 在计算数时超出最大可能数范围时返回的值。
除以 0(零)也会生成 Infinity
。
Infinity
是数:typeOf Infinity
返回number
。
(6)十六进制
JavaScript 会把前缀为 0x
的数值常量解释为十六进制。
默认地,Javascript 把数显示为十进制小数。
使用 toString()
方法可以把数输出为十六进制、八进制或二进制。
var myNumber = 128;
myNumber.toString(16); // 返回 80
myNumber.toString(8); // 返回 200
myNumber.toString(2); // 返回 10000000
(7)数值可以是对象
通常 JavaScript 数值是通过字面量创建的原始值:var x = 123
也可以通过关键词 new
定义为对象:var y = new Number(123)
,但是不建议这样做。
在 JavaScript 内部使用 valueOf()
方法可将 Number 对象转换为原始值。
当使用 ==
相等运算符时,相等的数看上去相等
当使用 ===
相等运算符后,相等的数变为不相等,因为 ===
运算符需要类型和值同时相等。
var x = 500; //数值number
var y = new Number(500); //对象object
// (x === y) 为 false,因为 x 和 y 的类型不同
(8)toString() 方法
toString()
以字符串类型返回数值。
所有数字方法可用于任意类型的数字(字面量、变量或表达式)
var x = 123;
x.toString(); // 从变量 x 返回 123
(123).toString(); // 从文本 123 返回 123
(100 + 23).toString(); // 从表达式 100 + 23 返回 123
(9)toExponential() 方法
toExponential()
返回字符串值,它包含已被四舍五入并使用指数计数法的数字。
参数定义小数点后的字符数(若无参数,则不会舍入):
var x = 9.656;
x.toExponential(2); // 返回 9.66e+0
x.toExponential(4); // 返回 9.6560e+0
x.toExponential(6); // 返回 9.656000e+0
(10)toFixed() 方法
toFixed()
返回字符串值,它包含了指定位数小数的数字。
var x = 9.656;
x.toFixed(0); // 返回 10
x.toFixed(2); // 返回 9.66 适合处理金钱
x.toFixed(4); // 返回 9.6560
x.toFixed(6); // 返回 9.656000
(11)toPrecision() 方法
toPrecision() 返回字符串值,它包含了指定长度的数字。
var x = 9.656;
x.toPrecision(); // 返回 9.656
x.toPrecision(2); // 返回 9.7
x.toPrecision(4); // 返回 9.656
x.toPrecision(6); // 返回 9.65600
(12)valueOf() 方法
valueOf()
以数值返回数值。
valueOf()
方法可将 Number 对象转换为原始值number。
var x = 123;
x.valueOf(); // 从变量 x 返回 123
(123).valueOf(); // 从文本 123 返回 123
(100 + 23).valueOf(); // 从表达式 100 + 23 返回 123
(13)把变量转换为数值
这三种 JavaScript 方法可用于将变量转换为数字。
这些方法并非数字方法,而是全局 JavaScript 方法,可用于所有 JavaScript 数据类型。
●Number()
方法
可用于把 JavaScript 变量转换为数值。
如果无法转换数字,则返回 NaN。
用于日期的 Number() 方法
Number()
还可以把日期转换为数字:
Number(new Date("2019-04-15")); // 返回 1506729600000
上面的 Number()
方法返回 1970 年 1 月 1 日至今的毫秒数。
●parseInt() 方法
解析一段字符串并返回数值。允许空格。只返回首个数字。
如果无法转换为数值,则返回 NaN (Not a Number)。即如果遇到的第一个字符不是数字,返回NaN。
●parseFloat() 方法
同上,只是返回的可以是小数。
(14)数值属性
●MAX_VALUE
: 返回 JavaScript 中可能的最大数字。
●MIN_VALUE
: 返回 JavaScript 中可能的最小数字。
●NEGATIVE_INFINITY
:表示负的无穷大(溢出返回)。
●NaN
: 表示非数字值(“Not-a-Number”)。
●POSITIVE_INFINITY
:表示无穷大(溢出返回)。
注意:数字属性不可用于变量
数字属性属于名为 number
的 JavaScript 数字对象包装器。
这些属性只能作为 Number.MAX_VALUE
访问。
使用 myNumber.MAX_VALUE
,其中 myNumber
是变量、表达式或值,将返回 undefined
。