通过昨天用Lua编程语言解决八皇后问题,我对于Lua语言的程序编写有了大致的了解。
今天开始了解Lua的数值相关概念。在Lua5.3中为数值格式提供了两种选择:一种为64位的integer类型,另一种则是双精度的float类型。如果是资源受限的平台,如单片机等我们可以使用精简的32位数值格式。
Lua5.3虽然给开发人员提供了整形类型转换为浮点数类型的方法,但是开发人员应当保证编程规范的统一性:要么忽略整型和浮点类型的不同,要么完整地控制每一个数值的表示。
Lua针对整型除法引入了一个新的运算符//floor, 该运算符将等到的商向负无穷取整。
标准的Lua程序语言使用64个比特位来存储整型值,其最大值为2^63-1. 数学库中提供了整形的最大值和最小值的表示方法: math.maxinteger 和 math.mininteger. 如果我们使用了超出该范围的整形值就会导致回环:即丢弃最高仅为。
math.maxinteger + 1 == math.mininteger --true
math.mininteger - 1 == math.maxinteger --true
-math.mininteger == math.mininteger --true
math.mininteger // 1 == math.mininteger -- true
通过与零进行按位或运算,可以把浮点值强制转换为整形值。在转换时, Lua会检测被转换的浮点数是否与整型值完全一致,若该浮点数有小数部分且其值不在整形值的表述范围内,就会抛出异常。
另一种转换方式则是使用 math.tointeger函数
表达式的运算符优先级Lua遵循传统的数学运算法则,故不做赘述。