Lua获得数字类型

Rya*_*yan 0 lua

在Lua中,对任何数字使用类型函数总是返回'number'.是否有一个函数可以告诉您Lua解释器是否使用32位浮点数,64位双精度数,整数或其他数字类型?

我试着写一个这样的函数:

function numbertype()
  local rational = 5 / 2

  if rational == 2 then
    -- equals 2
    return 'int'
  else
    -- about 2.5
    return 'double' -- but could it be a 32 bit float or something else?
  end
end

print(numbertype())
Run Code Online (Sandbox Code Playgroud)

它还无法检测到浮点数,双精度数和未知类型之间的差异.如何在Lua的解释器中查询Lua的数字类型是否等同于int,float或double?我希望它能用纯净的Lua工作.

Nic*_*las 5

Pure Lua不能从口译员那里询问这些事情.由于解释器使用不同类型的能力是相当自由的形式(您可以选择任何浮点或整数类型),将此公开给Lua的唯一方法是将解释器编码以预测每种可能的数字类型它可以编译.

一般来说,你不应该打扰照顾.使用除双打之外的其他应用程序的应用程序充其量是罕见的.甚至LuaJIT,它必须处理ARM及其可怕的浮点数学,仍然隐藏其有效地使用整数数学作为优化的能力; Lua代码无法区分.

这是应该的.