算术运算符对两个操作数进行算术运算。
如果参考算术运算的其中一个操作数是字符串则尝试转换为数值运算,转换失败则抛出异常。字符串在自动转换为数值时,忽略首尾空白字符,空白字符串会转换为 0,自动转换数据类型时不会调用 _tonumber 元方法。请参考: 隐式数据类型转换
如果参考算术运算的操作数是数值、字符串以外的其他数据类型则查找该对象的元方法进行运算,如果对象并未定义元方法则抛出异常。 请参考: 重载操作符 元方法
算术运算符列表:
| 运算符 | 说明 |
|---|---|
+ |
加 |
- |
减(二元运算符)、取负(单目运算符) |
* |
乘 |
/ |
除 |
% |
模 |
** |
乘方 |
要特别注意 + 运算符的规则: #
++ 可以避免不必要的转换,也可避免不必要的误操作。+ 运算符将自动转换为字符串连接运算符 ++aardio 中的数值默认存储为 64 位浮点数(即原生类型中的 double 类型)。参考 数据类型 - number
在 aardio 中算术运算结果是 64 位浮点数(double),所以可能出现小数。我们可以使用 math.round 函数对计算结果四舍五入取整,也可以使用 math.floor 函数向下取整,或使用 math.ceil 函数向上取整。参考: math 库函数
以整除为例,将用 / 运算符计算除法的结果转换为整数的 aardio 示例如下:
import console;
//整除
var num = math.round( 10 / 3 );
//在控制台显示计算结果
console.log("计算结果:" ,num);
console.pause(true);
关于取模运算 #
aardio 取模运算符 % 的计算过程为 a % b == a - ⌊a/b⌋ b,在计算 ⌊a/b⌋ 这一步时对结果下取整(向负无穷大取整),a % b 运算结果的符号与右操作数( b )的符号相同。也就是说 a % b 等价于 a - ( math.floor(a/b) * b)。
不同编程语言的
%运算符的规则并不完全相同。 Python 的%运算符 与 aardio 规则相同(向下取整,符号随右操作数),而 C 语言则是向零取整,计算结果的符号随左操作数。
相关链接:模式匹配 % 运算符