number データ型、または 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 で数リテラルを表記する方法はいくつかあります:
演算
論理および関係 演算子 を使用して数を操作し、比較できます。また、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() を使用します。
- 数をゼロに向けて丸めるには、math.modf() を使用します。これにより、丸めた数の小数の差も第2の結果として返されます。
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