引言
在Lua 5.2及之前的版本中,所有的数值都以双精度浮点格式表示。从Lua 5.3版本开始,Lua语言为数值格式提供了两种选择:被称为integer的64位整型和被称为float的双精度浮点类型。对于资源受限的平台,我们可以将Lua 5.3编译为精简Lua(Small Lua)模式,在该模式中使用32位整型和单精度浮点类型。
数值常量
整型值和浮点型值的类型都是"number"。
在少数情况下,当需要区分整型值和浮点型值时,可以使用函数math.type。
Lua语言还支持十六进制的浮点数,这种十六进制浮点数由小数部分和以p或P开头的指数部分组成。
> 0xa.bp2 -->42.75
可以使用%a参数,通过函数string.format对这种格式进行格式化输出。
算术运算
操作符 | 描述 | 实例 |
---|---|---|
+ | 加法 | A + B 输出结果 30 |
- | 减法 | A - B 输出结果 -10 |
* | 乘法 | A * B 输出结果 200 |
/ | 除法 | B / A w输出结果 2 |
% | 取余 | B % A 输出结果 0 |
乘幂 | A^2 输出结果 100 | |
- | 负号 | -A 输出结果v -10 |
// | 整除运算符(>=lua5.3) | 5//2 输出结果 2 |
数学库
Lua语言提供了标准数学库math。标准数学库由一组标准的数学函数组成,包括三角函数(sin、cos、tan、asin等)、指数函数、取整函数、最大和最小函数max和min、用于生成伪随机数的伪随机数函数(random)以及常量pi和huge(最大可表示数值,在大多数平台上代表inf)。
所有的三角函数都以弧度为单位,并通过函数deg和rad进行角度和弧度的转换。
随机数发生器
1.math.random():返回一个在[0,1)范围内均匀分布的伪随机实数
[root@localhost ~]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.random()
0.84018771676347
>
2.math.random(n):返回一个在[1,n]范围内的伪随机整数
[root@localhost ~]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.random(8)
7
>
3.math.randomseed(seed):设置伪随机数发生器的种子
[root@localhost ~]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.randomseed(os.time())
取整函数
1.floor:floor向负无穷取整(向下取整)
2.ceil:向正无穷取整(向上取整)
3.modf:向零取整(在数轴上,当前这个数x向0点方向一个整数。正数向右看,负数向左看)
表示范围
标准Lua使用64个比特位来存储整型值,其最大值为263-1,约等于1019;精简Lua使用32个比特位存储整型值,其最大值约为20亿。数学库中的常量定义了整型值的最大值(math.maxinteger)和最小值(math.mininteger)。
惯例
可以简单地通过增加0.0的方法将整型值强制转换为浮点型值,一个整型值总是可以被转换成浮点型值。
通过与零进行按位或运算,可以把浮点型值强制转换为整型值。
对小数进行取整必须显式地调用取整函数。
另一种把数值强制转换为整型值的方式是使用函数math.tointeger,该函数会在输入参数无法转换为整型值时返回nil。
运算符优先级
在二元运算符中,除了幂运算和连接操作符是右结合的外,其他运算符都是左结合的。