数字数据类型,或称double,表示 双精度(64位)浮点数。数字的范围从 -1.7 * 10308 到 1.7 * 10308(大约 15 位有效数字,无论是正数还是负数)。
有符号和无符号
数字的符号表示它是正数还是负数。例如,1 是正数,-1 是负数。在 Luau 中,数字 -0 等价于 0。
print(0 == -0) --> trueprint(-0 > 1) --> falseprint(-0 < 1) --> trueprint(-0 > -1) --> trueprint(-0 < -1) --> false
数字分类
Luau 不区分整数和数字,但 API 参考有时会区分它们,以更具体地说明如何使用每个 API。
float
float 数字类型指的是带小数点的实数。在计算机科学术语中,它们是 单精度(32位)浮点数,这种精度不如双精度浮点数,但对大多数用例来说足够精确,并且占用的内存和存储较少。
int
integer 数字类型,或称 int,指的是 32 位整数,其范围从 -231 到 231 - 1。期望整数的属性和函数在您分配或传递非整数时可能会自动四舍五入或引发错误。
int64
int64 数字类型指的是带符号的 64 位整数,其范围从 -263 到 263 - 1。这种类型的整数通常用于使用来自 Roblox 网站的 ID 编号的方法。例如,Player.UserId 是一个 int64,MarketplaceService:PromptPurchase() 和 TeleportService:Teleport() 都期望 ID 参数为 int64。
表示法
数字的表示法是从最显著的数字开始(大端)。在 Luau 中有多种表示数字字面量的方法:
运算
您可以使用逻辑和关系 运算符 来操作和比较数字。您还可以在 math 库中使用数学函数,如 math.sqrt() 和 math.exp(),以及在 bit32 库中进行位运算。
类型检查
您可以通过使用 type(x) 或 typeof(x) 来确定值 x 是否是一个数字。如果 x 是一个数字,两者均返回字符串 number。
local testInt = 5local testDecimal = 9.12761656local testString = "Hello"print(type(testInt)) --> numberprint(type(testDecimal)) --> numberprint(type(testString)) --> stringprint(typeof(testInt)) --> numberprint(typeof(testDecimal)) --> numberprint(typeof(testString)) --> string
四舍五入函数
您可以使用 math.floor(),math.ceil() 或 math.modf() 来对数字进行四舍五入。如果 Luau 可以将其表示为整数,这些函数将返回整数结果。如果数字太大,Luau 将其作为浮点数返回。
- 要确定数字 x 是否为整数,可以使用 math.floor(x) == x。
- 要向下舍入一个数字,可以使用 math.floor()。
- 要向上舍入一个数字,可以使用 math.ceil()。
- 要向零舍入一个数字,可以使用 math.modf()。它还以第二个结果返回舍入数字的分数差。
print(math.floor(3.3)) --> 3print(math.floor(-3.3)) --> -4print(math.ceil(3.3)) --> 4print(math.ceil(-3.3)) --> -3print(math.modf(3.3)) --> 3 0.2999999999999998print(math.modf(-3.3)) --> -3 -0.2999999999999998