Lua 5.2 及之前,Lua 在全平台使用 64 位的 双精度浮点数。
Lua 5.3 开始,Lua 支持了 64 位 integer 和 float。 在不支持 64 位的平台,支持了 32 位 integer 及 float。这种平台的 Lua 被称为 Small Lua。
对于 integer 及 float,Lua 的原则是:
the programmer may choose to mostly ignore the difference between integers and floats or to assume complete control over the representation of each number.
因此大多数情况下不需要去区分 integer 和 float。
Lexical
> 4 --> 4
> 0.4 --> 0.4
> 4.57e-3 --> 0.00457
> 0.3e12 --> 300000000000.0
> 5E+20 --> 5e+20
> type(3) --> number
> type(3.5) --> number
> type(3.0) --> number
> math.type(3) --> integer
> math.type(3.0) --> float
-- 值相同的 integer 及 float 被认为是相等的
> 1 == 1.0 --> true
> -3 == -3.0 --> true
> 0.2e3 == 200 --> true
-- 16 进制表示 integer 及 float
> 0xff --> 255
> 0x1A3 --> 419
> 0x0.2 --> 0.125
> 0x1p-1 --> 0.5
> 0xa.bp2 --> 42.75
Arithmetic Operators
> 13 + 15 --> 28
> 13.0 + 15.0 --> 28.0
> 13.0 + 25 --> 38.0
> -(3 * 6.0) --> -18.0
> 3.0 / 2.0 --> 1.5
> 3 / 2 --> 1.5
> 3 // 2 --> 1
> 3.0 // 2 --> 1.0
> 6 // 2 --> 3
> 6.0 // 2.0 --> 3.0
> -9 // 2 --> -5
> 1.5 // 0.5 --> 3.0
伪随机数生成
使用 math.random
。