Lua数值
回到:
数值
在Lua 5.2以及之前的版本只有number,它们都以双精度浮点数的方式表示,它能表达的最大整数是2^53^。在Lua 5.3中,引入了两种类型的数值类型:
- integer,64位整型,支持的最大值为2^63^-1
- float,双精度浮点数
因为Lua 5.2及之前版本中支持的2^53^为9,007,199,254,740,992
,这是一个极大的整数值,所以Lua 5.2和Lua 5.3并不会出现太大的不兼容性。
1 | type(3) --> number |
算术运算
算术运算符有:
1 | + - * / % ^ // |
- Lua可识别带符号的负数(如
-3
),不可识别带正号的正数(如+3
) - 两个整数之间的算术运算,结果仍然是整数,除法运算和幂运算除外
- 如果有一个或两个都是浮点数,则算术运算结果是浮点数,如果有整数,则整数先转换成浮点数
- 无论是整数除还是涉及浮点除,Lua为了保证两种除法结果一致,使得除法运算结果均为浮点数
- 为了让整数除法运算的结果也是整数,Lua引入了floor除法运算符号
//
- 幂运算总是返回浮点数,且幂运算
- 取模运算
a % b
的符号总是由b的符号决定,且大小值由b决定。例如x % (-3)
的结果一定是负数,且值只能为0、-1、-2
例如:
1 | 3+2 --> 5 |
tonumber()
tonumber(arg1,arg2)尝试将arg1转换成数值,如果能够转换则返回转换后的值,不能转换则返回nil。可使用arg2指定将arg1识别为多少进制的数。
1 | tonumber(3.3) --> 3.3 |
math库
math库提供了一些数学运算的函数,包括各种三角函数、指数和对数函数,还包括:
1 | pi |
math.tointeger(A)
将A转换成整数,如果不能转换,则返回nil。只有表示整数值的数才能转换成整数。
1 | math.tointeger(3) --> 3 |
math.random()
生成随机数:
1 | math.random() --> 返回0到1之间的随机小数值 |
math.randomseed()
指定随机数种子,一般以os.time()作为种子值。
1 | lua -e 'math.randomseed(os.time());print(math.random(1,10))' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 骏马金龙!
评论