数字运算和表达式
数据类型
你编写的程序运行时,主要工作就是对各种数据进行操作
编程语言中的 数据是 有 类型
的。
比如 表示一个数字的数据
和 表示一个字符串的数据
就是不同的类型
数字是数字类型, 字符串是字符串类型
数字
任何编程语言,都经常要进行 数字
计算。
js中, 一个 数字数据 的类型是 数字(Number)
js中的数字类型的数据 可以是 整数或者小数
整数
整数我们小学就学过,比如 1, 2, 3, 100, 1000, 999999等等
当然还有负数的整数 -1, -2, -999 等等
在js语言中,整数的写法 和 数学课上的写法 一样
比如 整数 1,就是
1
整数 999,就是
999
整数 -1,就是
-1
小数
好,刚才说过了整数,我们再来看另外一种类型的数字:小数, 就是带小数点的数字。
在js语言中,小数的写法也和 数学课上的写法 一样,比如
3.14
4.0
-3.3333
存储特性
整数和小数在 JavaScript 解释器内部其实都是存储为 双精度浮点数
(Double-precision floating-point)。
就像 Java 或者 C# 中的 double
这种格式以 64 位存储数字,如下图
其中:
数字(小数)存储在 0 到 51 位,
指数存储在 52 到 62 位,
符号存储在 63 位。
所以 在 JavaScript 解释器看来,整数 和 小数 都是一样的,都是 数字类型
这和很多其他编程语言(Java、Python、C 等等)不同。
数学运算
js语言开发是 经常要进行 数学运算的。
运算表达式 的写法 也和我们小学数学课上的写法 差不多
大家可以 打开 浏览器Console ,按照下面的例子输入运算表达式
- 加法
> 5 + 8
13
注意,上面的代码 5 + 8
就是一个表达式,被 js解释器 执行后,会产生一个结果数字 13。
加号前后 可以有些空格, 也可以没有空格,像这样 5+8
- 减法
> 999 - 111
888
同样,上面的代码 999 - 111
是一个表达式,被js解释器执行后,会产生一个结果数字 888
- 乘法
> 8 * 9
72
- 除法
> 3 / 2
1.5
注意,计算结果是小数
- 只需要得到余数的除法
> 3 % 2
1
- 只需要得到商的除法
> Math.trunc(3 / 2)
1
- 次方
> 10 ** 3
1000
上限整数
> Math.ceil(3.1)
4
下限整数
> Math.floor(3.9)
3
更复杂的是: 混合运算
> 5 * 4 / 2 + 1
11
上面的表达式运算的时候,先算乘除部分,再算加减部分。因为 乘除 的优先级高于 加减。
所以先计算的是 5 * 4 / 2
得到结果 10, 再加上 1, 得到结果 11
如果你需要把 2 + 1
这部分作为整体运算,得到3,然后再被 5 * 4
的结果 除,可以使用括号,像这样
> 5 * 4 / (2 + 1)
6.666666666666667
括号扩起来的部分 表示是一个整体 优先进行运算。
js 中,详细的操作符优先级,可以参考MDN文档
该表从上往下,优先级依次降低。越是上面的操作符,优先级越高。
可以看到,乘除在加减的上方,所以优先级更高。 同时出现在表达式中,先计算乘除。
同一行中的操作符优先级相等,同时出现在表达式中,通常按照从左到右的次序执行。
表达式
前面的这些带 加减乘除 运算符的 像
5 + 8
5 * 4 / (2 + 1)
它们的特点是能够产生出一个 结果数据
的 一段代码,
这部分 代码语句 术语叫做 表达式 ,英文称之为 expression
上面这些是数学运算的表达式, 结果是一个数字,以后,我们还会有其它类型的表达式
我们可以用 console.log 将表达式的结果输出到界面上,比如
console.log(5 * 4 / (2 + 1))
因为表达式可被求值,在编程中, 我们经常需要将 表达式的结果给一个变量, 变量的概念,下节课会详细讲
变量名在 左边, 中间是 = 号,等号的右侧是表达式, 就形成过赋值语句 比如
let a = ((118+998)*2.0 + 34)/45
那么这个变量 a 就拥有了 表达式的结果
console.log(a)
关于变量和赋值语句,后面的课程会讲.
语句结尾要加分号吗
js语句结尾可以加分号也可以不加
let a = ((118+998)*2.0 + 34)/45
console.log(a)
console.log(a) ;
因为即使你不加分号,js引擎执行时会自动加上分号,称之为 ASI(Automatic Semicolon Insertion)
到底加分号好还是不加好,众说纷纭。
我个人做法是不加分号(因为我比较懒),除非发现有的地方一定要加。