1. 主页
  2. 文档
  3. 学习君土脚本
  4. 君土脚本 第一步
  5. 君土脚本中的基础数学 — 数字和操作符

君土脚本中的基础数学 — 数字和操作符

在本次课程中,我们讨论 君土脚本 中的数学 — 我们如何使用 运算符 和其他功能来成功地操作数字以完成我们的请求,熟悉 君土脚本中 算(Math) 的基础知识。

人人都爱数学

好吧,可能不是。有些人喜欢数学,有些人可能从在学校必须学习乘法表和长除法时就讨厌数学,还有人介于两者之间。但我们都不能否认,数学是生活的基本组成部分,我们离不了它。尤其如此,当我们学习编写 君土脚本 程序(或任何其他语言),我们所做的很多事情都依赖于处理数值数据,计算新值等。你将不会惊讶地认识到 君土脚本 有一套可用的全功能的数学功能。

本文仅讨论您现在需要了解的基本部分。

数字类型

在编程中,即使是人人熟知的最普遍的十进制数,也比你想象的要复杂的多。我们使用不同的术语来描述不同类型的十进制数,例如:

  • 整数 就是整数,例如 10, 400, 或者 -5.
  • 浮点数 (浮点) 有小数点或小数位,例如 12.5,和 56.7786543。
  • 双精度 双精度是一种特定类型的浮点数,它们具有比标准浮点数更高的精度(这意味着它们精确到更大的小数位数)。

我们甚至有不同类型的数字系统! 十进制是基数10(意味着它在每列使用0-9),但是我们也有这样的东西:

  • 二进制 — 计算机的最基础语言; 0 和 1
  • 八进制 — 基数8,每列使用0-7
  • 十六进制 — 基数16,每列使用0-9,然后使用a-f。 在样式表(CSS)中设置颜色时,可能会遇到这些数字。

在你开始担心你的大脑混乱之前,先停下来吧! 一开始,我们将在本课程中坚持使用十进制数; 你很少会遇到需要开始考虑其他类型的情况,如果有的话。

第二个好消息是,与其他一些编程语言不同,君土脚本只有一个数据类型用来表示数字(包括整数和小数 ),您猜对了,数字(Number)。 这意味着,你在君土脚本中处理的任何类型的数字,都以完全相同的方式处理它们。

这是我们的全部数字

让我们快点玩一些数字,以重新定义我们所需要的基本语法。 在君土集成开发环境中运行下面列出的代码。

  1. 首先,我们先声明一对变量,并分别用一个整数和一个浮点数来初始化它们,然后再打印变量名来检查是否正确:
定 整数 = 5;
定 浮点数 = 6.667; 
控制台.日志(整数); 
控制台.日志(浮点数);
  1. 数值键入不带引号 —— 在继续之前尝试声明和初始化更多包含数字的变量。
  2. 现在我们来看看我们的原始变量是否是相同的数据类型。 在君土脚本中有一个称为样(typeof) 的运算符。 输入如下所示的两行代码:
控制台.日志(样 整数); 
控制台.日志(样 浮点数);

在这两种情况下,都应该返回 "数(number)" —— 这使得事情变得更简单,因为若是不同的数字具有不同的数据类型,那么我们还须以不同的方式处理它们。呦!

算术运算符

算术运算符是我们用来做和等的基本运算符:
运算符: +
名称: 加法
作用: 两个数相加。
示例: 6 + 9

运算符: –
名称: 减法
作用: 从左边减去右边的数。
示例: 20 – 15

运算符: *
名称: 乘法
作用: 两个数相乘。
示例: 3 * 7

运算符: /
名称: 除法
作用: 左边的数除以右边的数
示例: 10 / 5

运算符: %
名称: 求余(有时候也叫取模)
作用: 在你将左边的数分成同右边数字相同的若干整数部分后,返回剩下的余数
示例: 8 % 3 (返回 2,8除以3的倍数,余下2 。)

运算符: **
名称: 幂
作用: 取底数的指数次方,即指数所指定的底数相乘。
示例: 5 ** 5 (返回 3125,相当于 5 * 5 * 5 * 5 * 5 。)

注释: 你以后有时候会看到参与算术计算的数字被称为 操作数(operands)。

注释: 有时你可能会看到使用较旧的 算.幂() 方法表达的指数,该方法的工作方式非常相似。 例如,在 算.幂(7, 3)  中,7 是基数,3 是指数,因此表达式的结果是 343。 算.幂(7, 3) 相当于 7 ** 3

我们可能不需要教你如何做基础数学,但我们想测试你对所涉及的语法的理解。 尝试将下面的示例输入到君土集成开发环境中。

  1. 首先尝试输入一些简单的例子,例如
控制台.日志(10 + 7); 
控制台.日志(9 * 8);
控制台.日志(60 % 3);
  1. 您还可以尝试声明变量并用数字初始化变量,然后尝试使用这些变量来求和 – 在求和中, 变量的行为与直接用其持有的数来求和完全一样。 例如:
定 数1 = 10; 
定 数2 = 50; 
控制台.日志(9 * 数1); 
控制台.日志(数1 ** 3); 
控制台.日志(数2 / 数1);
  1. 最后在本节中,尝试输入一些更复杂的表达式,如:
控制台.日志(5 + 10 * 3); 
控制台.日志(数2 % 9 * 数1); 
控制台.日志(数2 + 数1 / 8 + 2);

这最后的一组计算中可能没有给出你期望的结果; 下面的部分也许能告诉你为什么。

运算符优先级

我们来看看上面的最后一个例子,假设数2的值为50,数1的值为10(如上所述):

数2 + 数1 / 8 + 2;

一般人,你会将它看作“50加10等于60”,然后“8加2等于10”,最后“60除以10等于6”。

但是, 君土脚本是先算“10除以8等于1.25”,再算“50加1.25加2等于53.25”。

这是因为运算符优先级 —— 一些运算符将在计算算式(在编程中称为表达式)的结果时先于其他运算符被执行。 君土脚本中的运算符优先级与学校的数学课程相同 – 乘法和除法总是先完成,然后是加法和减法(总是从左到右进行计算)。

如果想要改变计算优先级,可以把想要优先计算的部分用括号围住。 所以要得到结果为6,我们可以这样做:

(数2 + 数1) / (8 + 2);

尝试看看。

注意:可以在表达式和运算符中找到所有JavaScript运算符的完整列表及其优先级。

自增和自减运算符

有时候,您需要反复把一个变量加1或减1。 这可以方便地使用自增(++)和递减( -- )运算符来完成。 我们在君土脚本 初体验文章中使用了++,当我们添加1到我们的 猜测次数 变量来跟踪用户在每次输入之后剩下的猜测时。

猜测次数++;

注释: 它们最常用于 循环 中,您将在以后的课程中了解。 例如,假设您想循环查看价格表,并为每个价格增加销售税。 您可以使用循环依次查看每个值,并在每种情况下进行必要的计算,以添加销售税。 当需要时,增量器用于移动到下一个值。 我们稍后将会详细介绍循环。

首先,请注意,您不能将自增和自减直接应用于一个数字,这可能看起来很奇怪,其实我们为变量赋值一个新的更新值,而不是对该值进行操作。 以下将返回错误:

3++;

所以,你只能增加一个现有的变量。 尝试这个:

定 数1 = 4;
控制台.日志(数1++);  // 打印 4

好的,第二个奇怪的东西! 执行此操作时,您会看到返回值为4,这是因为 控制台.日志(数1++) 返回当前值,然后增加变量。 如果您再次返回变量值,则可以看到它已经递增:

控制台.日志(数1); // 打印 5

递减 -- 同样如此,尝试以下操作:

定 数2 = 6;
控制台.日志(数2--);
控制台.日志(数2)

注意: 您可以使君土脚本以其他方式进行操作 – 先递增/递减变量,然后返回值 – 将操作符放在变量的开头,而不是结束。 再次尝试上面的例子,但这次使用 ++1 和 --2

定 数1 = 4;
控制台.日志(++数1);  // 打印 5
控制台.日志(数1);  // 打印 5

定 数2 = 6;
控制台.日志(--数2); // 打印 5
控制台.日志(数2); // 打印 5

赋值运算符

赋值运算符是向变量分配值的运算符。 我们已经多次使用最基本的一个:=, 它只是将右边的值赋给左边的变量 ,即:

定 甲 = 3; // 甲 的值是 3
定 乙 = 4; // 乙 的值是 4
甲 = 乙; // 甲 和 乙 有相同的值, 4

但是还有一些更复杂的类型,它们提供了有用的快捷方式,可以使您的代码更加清洁和高效。 最常见的如下:
运算符: +=
名称: 加法赋值
作用: 左边的变量加上右边的数值得到一个值,然后再这个值赋给左边的变量。
示例: 甲 = 3;
甲 += 4;
等价于: 甲 = 3;
甲 = 甲 + 4;

运算符: -=
名称: 减法赋值
作用: 左边的变量减去右边的数值得到一个值,然后再这个值赋给左边的变量。
示例: 甲 = 6;
甲 -= 3;
等价于: 甲 = 6;
甲 = 甲 – 3;

运算符: *=
名称: 乘法赋值
作用: 左边的变量乘以右边的数值得到一个值,然后再这个值赋给左边的变量。
示例: 甲 = 2;
甲 *= 3;
等价于: 甲 = 2;
甲 = 甲 * 3;

运算符: /=
名称: 除法赋值
作用: 左边的变量除以右边的数值得到一个值,然后再这个值赋给左边的变量。
示例: 甲 = 10;
甲 /= 5;
等价于: 甲 = 10;
甲 = 甲 / 5;

尝试在你的运行输入上面的一些示例,以了解它们的工作原理。 在每种情况下,你是否可以猜出打印值。

请注意,您可以愉快地使用每个表达式右侧的其他变量,例如:

定 甲 = 3; // 甲 包含值 3
定 乙 = 4; // 乙 包含值 4
甲 *= 乙; // 甲 现在包含值 12

注意: 虽然有很多可用的赋值运算符, 但是这些是你现在应该学习的基本的一类。

比较运算符

有时,我们将要运行真/假测试,然后根据该测试的结果进行相应的操作 – 为此,我们使用比较运算符。

运算符名称作用示例
===严格等于测试左右值是否相同5 === 2 + 4
!==严格不等于测试左右值是否相同5 !== 2 + 3
<小于测试左值是否小于右值。10 < 6
>大于测试左值是否大于右值10 > 20
<=小于或等于测试左值是否小于或等于右值。3 <= 2
>=大于或等于测试左值是否大于或等于正确值。5 >= 4

注意: 您可能会看到有些人在他们的代码中使用==!=来判断相等和不相等,这些都是君土脚本中的有效运算符,但它们与===/!==不同,前者测试值是否相同, 但是数据类型可能不同,而后者是严格版本, 测试值和数据类型是否相同。 严格的版本往往导致更少的错误,所以我们建议您使用这些严格的版本。

比较运算符都返回 / 值 – 我们在上一篇文章中提到的那些布尔值。 这些是非常有用的,因为它们允许我们在我们的代码中做出决定 – 每次我们想要选择某种类型时,都会使用这些代码,例如:

  • 根据功能是打开还是关闭,在按钮上显示正确的文本标签。
  • 如果游戏结束,则显示游戏消息,或者如果游戏已经获胜,则显示胜利消息。
  • 显示正确的季节性问候,取决于假期季节。
  • 根据选择的缩放级别缩小或放大地图。

当我们在以后的的文章中查看条件语句时,我们将介绍如何编写这样的逻辑。 现在,我们来看一个我们在猜数字程序中的简单例子:

务 猜数(猜: 数, 随机数: 数): 两 {
  若(猜 === 随机数) {
    控制台.日志('恭喜你!猜对了');
    回 真;
  } 别 {
    控制台.日志('你猜错了!');
    若(猜 < 随机数) {
      控制台.日志('你猜低了!');
    } 别{
      控制台.日志('你猜高了!');
    }
    回 假;
  }
}

总结

在本文中,我们已经介绍了现在需要了解君土脚本中数字的基本信息。 你会发现,在你学习君土脚本过程中,数字类型的数据一直都在被使用,所以熟练的掌握它是一个不错的选择。 如果你是那些不喜欢数学的人之一,你应该庆幸这一章内容很简短。

在下一篇文章中,我们将探讨文本,以及君土脚本如何让我们操纵它。