숫자 데이터 유형, 또는 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,는 -231에서 231 - 1까지의 범위를 갖는 32비트 정수를 나타냅니다. 정수를 기대하는 속성과 함수는 비정수를 할당하거나 전달할 경우 자동으로 반올림하거나 오류를 발생시킬 수 있습니다.
int64
int64 숫자 유형은 -263에서 263 - 1까지의 범위를 갖는 부호 있는 64비트 정수를 나타냅니다. 이 정수 유형은 Roblox 웹사이트에서 ID 번호를 사용하는 메서드에서 일반적입니다. 예를 들어, Player.UserId는 int64 이며, MarketplaceService:PromptPurchase()와 TeleportService:Teleport()는 각각 ID 인수로 int64를 기대합니다.
표기법
숫자는 가장 큰 자릿수부터 시작하여 표기됩니다 (빅 엔디안). Luau에서 숫자 리터럴을 표기하는 여러 방법이 있습니다:
- 과학적 표기법 — 소수점 숫자 다음에 e 또는 e+를 쓰고, 그 다음에 정수를 적어 소수점 숫자를 10의 거듭제곱으로 높입니다. 예를 들어, 12e3은 12 × 10^3 (12,000)입니다.
연산
논리 및 관계 연산자를 사용하여 숫자를 조작하고 비교할 수 있습니다. 또한 math.sqrt() 및 math.exp()와 같은 수학 함수를 math 라이브러리에서 사용할 수 있으며, bit32 라이브러리에서 비트 연산도 가능합니다.
유형 통찰
값 x가 숫자인지 여부를 알아보려면 type(x) 또는 typeof(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()을 사용합니다.
- 숫자를 0으로 향하게 반올림하려면 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