в lua до версии 5.3 все числа по умолчанию являются числами с плавающей запятой двойной точности, с версии 5.3 числа делятся на 64-разрядные целые и вещественные, типы чисел определяются литералами и в результате разных операций преобразования (например math.tointeger). в luajit с обычными числами всё так же, как в lua 5.2 и прежних, но есть ещё boxed-значения, в их числе знаковые и беззнаковые 64-разрядные целые, поддерживающие арифметику. создать значение такого типа можно с помощью ffi: local a = ffi.new('int64_t', 282)
или с помощью литералов со специальными суффиксами, которые есть только в luajit: local signed = 282LL
, local unsigned = 282ULL
. такие числа нельзя использовать в качестве ключей таблицы и передавать без преобразования (tonumber) в нативные функции, принимающие обычные числа.