Lua: Language: Numbers

 26th February 2022 at 5:35pm

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