forked from liang996/Javascript-Learning-notes
-
Notifications
You must be signed in to change notification settings - Fork 1
/
js数字.txt
191 lines (119 loc) · 3.68 KB
/
js数字.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
1.JavaScript 只有一种数值类型。
书写数值时带不带小数点均可。
例子:
带小数的:
var a=3.14;
不带小数的:
var b=4;
2.超大或超小的数可通过科学计数法来写:
实例
var x = 123e5; // 12300000
var y = 123e-5; // 0.00123
3.JavaScript 数值始终是 64 位的浮点数
与许多其他编程语言不同,JavaScript 不会定义不同类型的数,比如整数、短的、长的、浮点的等等。
JavaScript 数值始终以双精度浮点数来存储,根据国际 IEEE 754 标准。
此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号:
数字 指数 符号
52(0-51) 11(52-62) 1(63)
4.精度(整数15位,小数17位)
整数(不使用指数或科学计数法)会被精确到 15 位。
实例
var x = 999999999999999; // x 将是 999999999999999
var y = 9999999999999999; // y 将是 10000000000000000
5.小数的最大数是 17 位,但是浮点的算数并不总是 100% 精准:
实例
var x = 0.2 + 0.1; // x 将是 0.30000000000000004
使用乘除法有助于解决上面的问题:
实例(对于0.1+0.2想要得到0.3,可以先将他们都扩大10倍,在除以10。 )
var x = (0.2 * 10 + 0.1 * 10) / 10; // x 将是 0.3
6.数字和字符串相加
警告!!
JavaScript 的加法和级联(concatenation)都使用 + 运算符。
数字用加法。字符串用级联。
如果您对两个数相加,结果将是一个数:
实例
var x = 10;
var y = 20;
var z = x + y; // z 将是 30(一个数)
a如果对两个字符串相加,结果将是一个字符串的级联:
实例
var x = "10";
var y = "20";
var z = x + y; // z 将是 1020(字符串)
b.如果您对两个数(两个数字在前)和一个字符串相加,结果也是字符串级联:
实例
var x = 10+5+"5";
// x 将是 155(一个字符串)
c.如果您对两个数(两个数字在后)和一个字符串相加,结果也是字符串级联:
var x = "5"+10+5;
// x 将是 5105(一个字符串)
d.如果您对一个数和一个字符串相加,结果也是字符串级联:
实例
var x = 10;
var y = "20";
var z = x + y; // z 将是 1020(一个字符串)
7.数字字符串
JavaScript 字符串可以拥有数字内容:
var x = 100; // x 是数字
var y = "100"; // y 是字符串
在所有数字运算中,JavaScript 会尝试将字符串转换为数字:
该例如此运行:
var x = "100";
var y = "10";
var z = x / y; // z 将是 10
该例也将如此运行:
var x = "100";
var y = "10";
var z = x * y; // z 将是 1000
该例如此运行:
var x = "100";
var y = "10";
var z = x - y; // z 将是 90
但是该例不会如上例般运行:
var x = "100";
var y = "10";
var z = x + y; // z 不会是 110(而是 10010)
在最后一个例子中,JavaScript 用 + 运算符对字符串进行了级联。
8.NaN - 非数值
NaN 属于 JavaScript 保留词,指示某个数不是合法数。
尝试用一个非数字字符串进行除法会得到 NaN(Not a Number):
实例
var x = 100 / "Apple"; // x 将是 NaN(Not a Number)
不过,假如字符串包含数值,则结果将是数:
实例
var x = 100 / "10"; // x 将是 10
您可使用全局 JavaScript 函数 isNaN() 来确定某个值是否是数,如果值是数,返回false,反之为true:
实例
var x = 100 / "Apple";
isNaN(x); // 返回 true,因为 x 不是数
要小心 NaN。假如您在数学运算中使用了 NaN,则结果也将是 NaN:
实例
var x = NaN;
var y = 5;
var z = x + y; // z 将是 NaN
结果也许是串连接:
实例
var x = NaN;
var y = "5";
var z = x + y; // z 将是 NaN5
9.数值可以是对象
通常 JavaScript 数值是通过字面量创建的原始值:var x = 123
但是也可以通过关键词 new 定义为对象:var y = new Number(123)
实例
var x = 123;
var y = new Number(123);
// typeof x 返回 number
// typeof y 返回 object
请不要创建数值对象。这样会拖慢执行速度。
new 关键词使代码复杂化,并产生某些无法预料的结果:
10。==和===的区别(前值比较值相等,后者比较引用类型和值是否相等)
当使用 == 相等运算符时,相等的数看上去相等:
实例
var x = 500;
var y = new Number(500);
甚至更糟。对象无法进行对比:
实例
var x = new Number(500);
var y = new Number(500);
// (x == y) 为 false,因为对象无法比较
因为他们又开辟了一个新的内存空间。JavaScript 对象无法进行比较。