提到数值,一般就会提到位和浮点精度问题。在 Lua 5 .2及之前的版本中,所有的数值都以双精度浮点格式表示 即(number)。
从 Lua 5 .3 版本开始,Lua语言为数值格式提供了两种选择 : 被称为integer 的 64位整型和被称为 float 的双精度浮点类型(注意,在本书中“float”不代表单精度类型)
对于资源受限的平台 , 可以将Lua 5.3 编译为精简 Lua( Small Lua )模式,在该模式中使用 32位整型和单精度浮点类型。(除了使用了 LUA_32BITS 宏定义以外 , 精简 Lua 和l标准 Lua 的源码是一样的 。 除了数值表示占用的字节大小不一样外,精简 Lua和标准 Lua完全一致)
接下来学习的大多数内容对于 Lua 5 .2及更早版本也同样适用 。 在本章末尾,我们会讨论一下兼容性方面的更多细节 。
由于双精度浮点型能够表示最大为 2的53次方的整型值,所以不会造成太大的不兼容性。
我们可以使用科学计数法(一个可选的十进制部分外加一个可选的十进制指数部分) 书写数值常量, 例如 :
具有十进制小数或者指数的数值会被当作浮点型值,否则会被当作整型值,当然由于整型值和浮点型值的类型都是 ”number”,所以输出的类型的时候没有区别。
同样的,它们之间也是可以互相转化的。在相同数值的不同类型判定的时候,它们也是被认为是相等的。