购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 算术运算符

算术运算符实现数学运算,表4-1列出了JavaScript中的算术运算符。

表4-1 JavaScript中的算术运算符

加、减、乘、除是最简单的算术运算,加号运算符和减号运算符分别为加号“+”和减号“-”,它们和数学上的写法完全相同;但是乘法运算符为星号“*”,除法运算符为斜杠“/”,它们和数学上的写法不同。

4.1.1 加、减法运算符

加法运算符“+”用于求两个数的和,减法运算符“-”用于求两个数的差,比如:

加法运算符“+”是一个比较特殊的操作符,可以用于任何数据类型。当加法运算符“+”出现在数值左边时,它代表正号,是一元运算符。减法运算符“-”与加法运算符“+”十分相似,当它出现在数值左边时,代表负号,是一元运算符。比如:

当加法运算符“+”的两边都有值时,它就是二元运算符,除了有求和的作用,还可能作为连接符进行字符串拼接。比如:

从这段代码可以发现,只要加法运算符“+”的一侧出现字符串类型的值,它就会将两侧的值进行拼接,否则就是求和运算。

4.1.2 乘、除法运算符

乘法运算符和除法运算符与数学上的写法完全不同,在JavaScript中,星号“*”代指乘法运算符,斜杠“/”代指除法运算符。乘法运算符“*”用于求两个数的乘积,除法运算符“/”执行第二个操作数除第一个操作数的操作,比如:

表达式“10*10”表示计算10乘以10的乘积,计算结果为100;表达式“100/10”表示100除以10,计算结果为10。

乘、除法运算符在处理一些特殊值的时候会有特殊行为。比如:非0数字除以0的运算结果是Infinity或-Infinity,0除以0的运算结果是NaN,任一操作数为NaN的运算结果为NaN。代码如下:

特殊值的判等仅在面试题中出现,在实际开发中出现的概率不大,读者只需要记住上述规律即可。

4.1.3 取余运算符

取余运算符用百分号“%”表示,用于得到一个数除以另一个数的余数,如果能够整除,则余数为0。取余运算符“%”是二元运算符。比如:

表达式“16%3”表示计算16除以3的余数。16除以3的结果是“商5余1”,注意,取余运算符“%”计算的不是“商”,而是“余数”,因此表达式“16%3”的结果是1;同理,表达式“25%7”表示计算25除以7的余数,因此结果是4;表达式“9%3”表示计算9除以3的余数,由于9能被3整除,因此结果是0。

取余运算符在实际开发中非常常见,比如,可以判断一个数能否被另一个数整除,可以求出一个数每位上的数字,可以求某个范围内的数等,在后续章节会讲解相关案例。

4.1.4 案例:计算一个三位数各个数位上的数字的总和

1.案例描述

使用JavaScript编程实现:用户输入一个三位数,计算各个数位上的数字的总和。比如,如果用户输入数字316,则显示结果10。因为316的各个数位上的数字3、1、6相加等于10。

2.算法

这个案例的难点是如何拆解一个三位数,即如何提取这个三位数的百位数、十位数和个位数。

JavaScript中没有函数可以直接拆解一个三位数,必须用一些巧妙的数学方法解决问题,这就叫算法。在编程中,使用API往往很容易,但是提出一个好的算法是较难的。

下面来看这个案例的算法。

个位数非常容易获取,只需要计算316%10即可,结果是6,如图4-1所示。

图4-1 获取个位数

十位数如何获取呢?即如何从316中得到1呢?稍加思考,我们就能想到一个“曲线救国”的路线:先用316除以10得到31.6,然后取整得到31,再计算31%10得到1,如图4-2所示。

图4-2 获取十位数

百位数如何获取呢?即对于316来说,如何得到3呢?可以先用316除以100得到3.16,然后取整就能得到3了,如图4-3所示。

图4-3 获取百位数

至此,已经非常顺利地获取了所有数字。可见,获取每个数字的方法各有不同,需要使用求余、取整等操作。若想快速想到这样的算法,是需要通过多写代码来不断积累的。在工作中,评判一个工程师的技术如何,很重要的一个标准就是看其算法能力是不是强。同学们一定要注意培养算法能力,而算法能力绝不是一朝一夕就培养出来的,需要动手写大量代码,慢慢感悟,举一反三。

3.案例代码

综合讲解的算法知识,相信你已经对该代码的逻辑了然于心:

运行代码,在弹出的输入对话框中输入925,如图4-4所示。

图4-4 输入三位数

单击“确定”按钮之后弹出警告框显示结果是16,这正是925各个数位上的数字之和,代码编写正确,如图4-5所示。

图4-5 显示925各个数位上的数字之和 vOX5zG5ZV8UOc8drKyl6DsdY4+R4LeUCiKrNQ9bleu5lvczmN8kBrLJJWZQ8bCIj

点击中间区域
呼出菜单
上一章
目录
下一章
×