3.1 LUA语言数值类型概述
在Lua语言中,所有的数字都是属于number类型;在Lua5.3以后的版本中,Lua语言又将number类型细化为两个子类(subtypes):integer(整型,64位)和float(64位双精度浮点型,注意与通常编程语言中的含义不一致)。这两个子类各有明确的应用场景,同时在必要时又能够自动转换。在位运算操作中会将float转换为integer,而在幂指数、除法运算中又会将integer转换为float,在其它同时适用于integer和float的算术运算中通常会将integer转换为float。在C API中同样会根据需要对integer和float进行转换。
在将integer转换为float时,如果这个integer能够用浮点数确切地表示出来,那么对应的float就是转换结果,否则,会用最接近的一个值来表示;这种转换操作不会失败。
在将float转换为integer时,需要判断其是否有整数部分及是否在integer的表示范围内,如果是的话可以进行转换,否则转换会失败。
标准Lua中integer和float都是64位的,但在嵌入式系统和一些小型机中,也可以编译成32位,以方便应用。
热门跟贴