Lua по умолчанию использует тип с плавающей запятой двойной точности (double
) в качестве единственного числового типа.Это мило и полезно.Тем не менее, я работаю над программным обеспечением, которое ожидает увидеть 64-битные целые числа, для которых я не могу использовать фактические 64-битные целые так или иначе.
Место, где целочисленный тип становится релевантным, относится к размерам файлов,Хотя я не ожидаю увидеть размеры файлов сверх того, что Lua может представить с полной «целочисленной» точностью, используя double
, я хочу быть готовым.
Какие стратегии вы можете порекомендовать при использовании 64-битного целогопечатать параллельно с числовым типом Lua по умолчанию?Я действительно не хочу выбрасывать реализацию по умолчанию за борт (и я не беспокоюсь о ее производительности по сравнению с целочисленной арифметикой), но мне нужен какой-то способ представления 64-битных целых чисел с полной точностью без слишком большого снижения производительности.
Моя проблема в том, что я не уверен, где изменить поведение.Должен ли я изменить синтаксис и расширить синтаксический анализатор (на ум приходят числа с добавленным LL или ULL, который, насколько мне известно, не существует в Lua по умолчанию), или я должен вместо этого написать свой собственный модуль C и определить тип пользовательских данных, который представляет 64-битную версиюцелое число вместе с библиотечными функциями, способными манипулировать значениями?...
Примечание: да, я встраиваю Lua, так что я могу свободно расширять его, как мне угодно.