Lua编程语言学习--数值型数据类型

454 阅读3分钟

引言

在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。

运算符优先级

image.png 在二元运算符中,除了幂运算和连接操作符是右结合的外,其他运算符都是左结合的。