JavaScript 数学基础:数字与运算符解析——WEB开发系列43

news2024/10/2 3:44:10

哈哈哈哈可能不是每个人都喜欢数学。有些人从小就享受解决复杂的数学问题,而另一些人则在学校被迫学习乘法表和长除法时对数学产生了厌恶。尽管如此,数学仍是生活中不可或缺的组成部分。无论我们处在哪里,数学的应用在我们生活中随处可见。在学习编写 JavaScript(或者任何其他编程语言)时,我们所做的很多事情都依赖于处理数值数据、进行计算以及生成新的值。在编程世界里,数学不仅是解决问题的工具,更是推动思维和逻辑的重要力量。 JavaScript 中,我们可以利用一整套功能强大的数学操作来处理数据、计算结果并实现各种复杂的功能。


一、数字类型

JavaScript 中,所有数字都被视为一种数据类型,称为“Number”。无论是整数还是浮点数,JavaScript 都将其视为单一的类型。这样的设计使得数字的处理变得更为简单和一致。我们先来看看如何在 JavaScript 中声明和初始化数字变量。

1.1 声明与初始化数字变量

我们可以使用 ​​let​​、​​const​​ 或 ​​var​​​ 来声明数字类型的变量。这里是一些基本的示例:

let integerVar = 42;   // 整数
let floatVar = 3.14;   // 浮点数
let negativeVar = -10;  // 负数
let zeroVar = 0;       // 零

console.log(integerVar); // 输出 42
console.log(floatVar);    // 输出 3.14
console.log(negativeVar); // 输出 -10
console.log(zeroVar);     // 输出 0

JavaScript 中,数字类型的变量可以直接赋值。无论是负数、零还是浮点数,使用 ​​console.log()​​​ 打印变量的值都非常直观。

1.2 检查数字类型

JavaScript 提供了 ​​typeof​​ 运算符,可以用来检查变量的数据类型。在这里,我们可以使用 ​​typeof​​​ 来确认我们的数字变量的类型是否都是 “number”:

console.log(typeof integerVar); // 输出 "number"
console.log(typeof floatVar);    // 输出 "number"
console.log(typeof negativeVar); // 输出 "number"
console.log(typeof zeroVar);     // 输出 "number"

如上所示,无论是整数、浮点数还是负数,​​typeof​​ 运算符都返回 ​​"number"​​​。这使得我们在处理不同类型的数字时,无需担心数据类型的差异。

1.3 特殊数字值

在 JavaScript 中,还有一些特殊的数字值需要注意,例如 ​​NaN​​ 和 ​​Infinity​​。

  • NaN(Not a Number):当某些数学运算无法产生有效数字时,结果将返回 ​​NaN​​。例如,0 除以 0 或对负数取平方根都将返回 ​​NaN​​。
let result = 0 / 0;
console.log(result); // 输出 NaN

let sqrtNegative = Math.sqrt(-1);
console.log(sqrtNegative); // 输出 NaN
  • Infinity:在 JavaScript 中,当数值超出可表示的范围时,结果将返回 ​​Infinity​​。例如,正数除以零将返回 ​​Infinity​​。
let infinite = 1 / 0;
console.log(infinite); // 输出 Infinity

1.4 判断 NaN

JavaScript 提供了 ​​isNaN()​​ 函数,用于判断一个值是否为 ​​NaN​​:

console.log(isNaN(result)); // 输出 true
console.log(isNaN(5));      // 输出 false

1.5 数字类型的演变

随着 ECMAScript 的演变,JavaScript 也加入了一些新的特性,例如 ​​BigInt​​,用于处理整数。某些情况下,我们可能需要处理超出 ​​Number​​ 类型的整数,这时可以使用 ​​BigInt​​:

let bigIntVar = BigInt(123456789012345678901234567890);
console.log(bigIntVar); // 输出:123456789012345678901234567890n

二、算术运算符

算术运算符是 JavaScript 中用于执行数学运算的重要工具。常见的算术运算符包括:加法 ​​+​减法 ​​-​乘法 ​​*​除法 ​​/​取余 ​​%​

2.1 基本运算示例

我们来看几个简单的运算示例,帮助你理解这些运算符的用法:

let a = 10;
let b = 5;

console.log(a + b); // 输出 15(加法)
console.log(a - b); // 输出 5(减法)
console.log(a * b); // 输出 50(乘法)
console.log(a / b); // 输出 2(除法)
console.log(a % b); // 输出 0(取余)

2.2 负数与零的处理

JavaScript 能够正确处理负数和零:

let negativeNum = -3;

console.log(a + negativeNum); // 输出 7
console.log(a - negativeNum); // 输出 13
console.log(a * negativeNum); // 输出 -30
console.log(a / negativeNum); // 输出 -3.333...
console.log(a % negativeNum); // 输出 1

2.3 运算符优先级

在复杂的数学表达式中,运算符的优先级决定了哪个运算符先执行。JavaScript 中的运算符优先级从高到低如下:

  1. 括号 ​​()​
  2. 自增 ​​++​​ 和自减 ​​--​
  3. 乘法 ​​*​​、除法 ​​/​​ 和取余 ​​%​
  4. 加法 ​​+​​ 和减法 ​​-​

例如:

let x = 10 + 5 * 2;   // 先乘法再加法,输出 20
let y = (10 + 5) * 2; // 括号优先,输出 30

console.log(x); // 输出 20
console.log(y); // 输出 30

2.4 小数运算

在进行小数运算时,JavaScript 会自动处理精度问题,但需要注意的是,浮点数的计算可能会产生精度误差:

let c = 0.1 + 0.2; 
console.log(c); // 输出 0.30000000000000004

这是因为某些十进制数在二进制中无法精确表示。因此,在需要高精度的计算时,建议使用 ​​toFixed()​​​ 方法格式化输出。

let d = (0.1 + 0.2).toFixed(2);
console.log(d); // 输出 "0.30"

三、自增和自减运算符

自增和自减运算符用于快速增加或减少变量的值。它们有两种形式:前缀和后缀。

前缀自增:​​++x​​、后缀自增:​​x++​​、前缀自减:​​--x​​、后缀自减:​​x--​

自增和自减的示例

让我们看看这些运算符的工作方式:

let z = 5;

console.log(++z); // 前缀自增:输出 6
console.log(z++); // 后缀自增:输出 6 (z 现在是 7)
console.log(z);   // 输出 7

console.log(--z); // 前缀自减:输出 6
console.log(z--); // 后缀自减:输出 6 (z 现在是 5)
console.log(z);   // 输出 5

在这里,前缀自增会先对变量进行自增操作,再返回值;而后缀自增则会先返回当前值,再对变量进行自增操作。


四、赋值运算符

赋值运算符用于将值赋给变量。最常用的赋值运算符是 ​​=​​​。此外,JavaScript 还提供了一些复合赋值运算符,使得代码更加简洁。

4.1 常见的赋值运算符

​=​​:赋值、​​+=​:加并赋值、​​-=​:减并赋值、​​*=​:乘并赋值、​​/=​:除并赋值、​​%=​:取余并赋值

4.2 赋值运算符示例

let num = 10;

num += 5; // 等价于 num = num + 5
console.log(num); // 输出 15

num -= 3; // 等价于 num = num - 3
console.log(num); // 输出 12

num *= 2; // 等价于 num = num * 2
console.log(num); // 输出 24

num /= 4; // 等价于 num = num / 4
console.log(num); // 输出 6

num %= 5; // 等价于 num = num % 5
console.log(num); // 输出 1

五、比较运算符

比较运算符用于比较两个值,并返回布尔值(​​true​​ 或 ​​false​​)。常见比较运算符包括:

相等 ​​==​​、不相等 ​​!=​​、全等 ​​===​​、不全等 ​​!==​​、大于 ​​>​​、大于等于 ​​>=​​、小于 ​​<​​、小于等于 ​​<=​

5.1 比较运算符示例

let a = 5;
let b = 10;

console.log(a == b); // 输出 false
console.log(a != b); // 输出 true
console.log(a === 5); // 输出 true
console.log(a !== 5); // 输出 false

console.log(a > b);   // 输出 false
console.log(a >= b);  // 输出 false
console.log(a < b);   // 输出 true
console.log(a <= b);  // 输出 true

5.2 类型转换与相等

在 JavaScript 中,​​==​​ 运算符会进行类型转换,而 ​​===​​ 运算符则会严格比较类型。让我们看看这两者的区别:

console.log(5 == '5');   // 输出 true (类型转换)
console.log(5 === '5');  // 输出 false (严格比较)

这就是为什么在进行比较时,使用 ​​===​​​ 更加安全,因为它不会进行隐式的类型转换。


六、数学对象

JavaScript 还提供了一个全局 ​​Math​​ 对象,用于执行更复杂的数学运算。​​Math​​​ 对象包含了一系列有用的数学方法和常量。

6.1 常用的 Math 方法

  • ​Math.abs(x)​​:返回 x 的绝对值。
  • ​Math.round(x)​​:返回四舍五入后的值。
  • ​Math.floor(x)​​:返回小于或等于 x 的最大整数。
  • ​Math.ceil(x)​​:返回大于或等于 x 的最小整数。
  • ​Math.sqrt(x)​​:返回 x 的平方根。
  • ​Math.pow(x, y)​​​:返回 x 的 y 次幂。

6.2 Math 对象示例

console.log(Math.abs(-10));        // 输出 10
console.log(Math.round(4.5));      // 输出 5
console.log(Math.floor(4.9));      // 输出 4
console.log(Math.ceil(4.1));       // 输出 5
console.log(Math.sqrt(16));         // 输出 4
console.log(Math.pow(2, 3));        // 输出 8

如有表述错误及欠缺之处敬请指正补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 ModelScope Studio 实现可滚动 ChatBot

前面的文章提到过 Gradio 的 Chatbot 不能自动滚动的问题&#xff0c;最近看到了 ModelScope Studio 扩展的一些组件&#xff0c;其中 Chatbot 就完美解决了自动滚动的问题&#xff0c;同时还增加了很多更细化的功能&#xff0c;例如可以设置用户和 AI 的头像。官方文档&#x…

C++进阶(3): 二叉搜索树

二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有的节点的值都小于等于 根节点的值若它的右子树不为空&#xff0c;则右子树上所有的节点的值都大于等…

时序必读论文15|TimeXer:通过外部变量增强Transformer在时间序列预测中的能力

论文标题&#xff1a;TimeXer: Empowering Transformers for Time Series Forecasting with Exogenous Variables 论文链接&#xff1a;https://arxiv.org/abs/2402.19072 前言 仅仅关注内生变量&#xff0c;通常不足以保证准确的预测&#xff0c;外部序列可以为内生变量提供…

MongoDB 副本集搭建 【docker compose + 本机部署】【建议收藏起来】

什么是副本集 MongoDB副本集&#xff08;Replica Set&#xff09;是一种数据冗余和故障恢复机制&#xff0c;它允许你维护相同数据的一个或多个副本&#xff0c;并提供自动故障转移和数据恢复能力。副本集是一个包含多个MongoDB实例&#xff08;通常称为成员&#xff09;的集合…

Linux学习笔记(一):Linux学习环境的安装及远程连接工具的使用

Linux学习笔记&#xff08;一&#xff09;&#xff1a;Linux学习环境的安装及远程连接工具的使用 本地安装虚拟机 1.安装VMWare(点击图片跳转下载&#xff09; 2.安装CentOS7光盘源(点击图片下载&#xff09; 3.安装 一路点下一步 点击确认 等待不要动,可能有点久,直到这个…

【内网渗透】最保姆级的春秋云镜Flarum打靶笔记

目录 flag1 flag3 flag4​ flag2 flag1 扫外网 打的是flarum论坛&#xff0c;p牛之前有写过phar反序列化的利用&#xff1a; 从偶遇Flarum开始的RCE之旅 rockyou.txt爆出administrator/1chris&#xff0c;登录 用这个工具生成phar包 https://github.com/ambionics/p…

【Python报错已解决】IndexError: index 0 is out of bounds for axis 1 with size 0

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

springboot整合seata

一、准备 docker部署seata-server 1.5.2参考&#xff1a;docker安装各个组件的命令 二、springboot集成seata 2.1 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>&…

helm部署ingress-nginx

helm部署ingress-nginx 19/100 保存草稿 发布文章 sj1163739403 未选择任何文件 ingress-nginx是管理南北向流量很好的一个工具&#xff0c;可以避免在云端频繁对LB进行配置&#xff0c;通过Label也可以实现让ingress-nginx都部署在指定的NodeGroup 一、helm安装ingress-nginx…

数据管理_DM的实现

DataManager 的实现 DataManager 是数据库系统中的核心组件&#xff0c;负责管理底层数据的访问、修改和事务处理。它是 DM 层直接对外提供方法的类&#xff0c;用来对上层其他模块提供数据操作的API的,同时也实现了对 DataItem 对象的缓存管理。DataItem 存储的 key 是由页号…

使用root账号ssh登录虚拟机ubuntu

在C:\Users\Administrator\.ssh目录下的config中&#xff0c;添加ubuntu会在根目录中&#xff0c;建立一个root文件夹。在该文件夹中建一个.ssh目录。像免密登录ubuntu设置中&#xff0c;把公钥考进去。在vscode中打开文件夹中选择要打开的文件夹&#xff0c;就可以不需要在ubu…

fiddler抓包14_自动重定向

课程大纲 重定向&#xff08;Redirect&#xff09;&#xff1a;将网络请求重新定向到其他位置。 按重定向方式分为&#xff1a;网页重定向、域名重定向、接口重定向…… 按持续时间分为&#xff1a;永久重定向、临时重定向。 ① 永久重定向&#xff0c;HTTP 301&#xff08;Mov…

Python或R时偏移算法实现

&#x1f3af;要点 计算单变量或多变量时序距离&#xff0c;使用欧几里得、曼哈顿等函数量化不同时序差异。量化生成时序之间接近度相似性矩阵。使用高尔距离和堪培拉距离等相似度测量。实现最小方差匹配算法&#xff0c;绘制步进模式的图形表示。其他语言包算法实现。 &…

D24【 python 接口自动化学习】- python 基础之判断与循环

day24 while循环 学习日期&#xff1a;20241001 学习目标&#xff1a;判断与循环--34 while循环&#xff1a;需要多次重复执行某段程序时&#xff0c;怎么做&#xff1f; 学习笔记&#xff1a; 循环结构简介 while循环语法 代码实现 循环的退出方法 执行出错&#xff0c;异…

复合系统推文

今天推出的是复合系统协调度这个模型的工具。 参考文献:《“干线公路—城市结点”复合系统协调度分析模型》 复合系统整体协调度模型以协同学的序参量原理和役使原理为基础&#xff0c;模型的参变量选择是模型合理性的前提&#xff0c; 重点选择在整个系统发展演变过程中起主…

CSP-J模拟赛(1)补题报告

前言&#xff1a; 1.交替出场&#xff08;alter) &#xff1a;10 2.翻翻转转&#xff08;filp)&#xff1a;0 3.方格取数&#xff08;square&#xff09;&#xff1a;0 4.圆圆中的方方&#xff08;round)&#xff1a;0 总结一下&#xff1a; 第一次考&#xff0c;没爆零就是胜…

锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计

锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计 目录 锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计 运行环境Matlab2023b及以上。 要实现基于BP神…

鼓组编曲:鼓编写技巧之进鼓加花编写

为了方便快速查阅和运用一些教程笔记&#xff0c;个人记性有时可能不是特别好&#xff0c;所以只能疯狂做笔记了&#xff0c;制作以下图文笔记&#xff0c;仅供参考…… 鼓组加花 鼓的变动 进鼓后然后就可以动次打次了 下面是2个底鼓的加花

基于投影滤波算法的rick合成地震波滤波matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 RICK合成地震波模型 4.2 投影滤波算法原理 5.完整工程文件 1.课题概述 基于投影滤波算法的rick合成地震波滤波matlab仿真。分别通过标准的滤波投影滤波以及卷积滤波投影滤波对合成地震剖面进行滤波…

SQL第10课挑战题

1. 从OrderItems表中返回每个订单号order_num各有多少行数order_lines&#xff0c;并按order_lines对结果进行排序 2. 返回名为cheapest_item的字段&#xff0c;该字段包含每个供应商成本最低的产品&#xff08;使用products表中的prod_price)&#xff0c;然后从最低成本到最高…