lua-设计与实现 1类型

  1. 整形和浮点型都是数值型(number)的子类型(subtype),这意味着你几乎不需要显式地区分整形和浮点型,整形会自动转换为浮点型;包含整数的浮点数也可以自动转化为整形。2. 在加入整形以前,Lua用double存储number类型。由此产生了一系列问题:1) double只有53个有效位,这让按位运算很尴尬(~0究竟是0xffffffff还是-1?);一些算法(加密、编码)和类型(句柄)都需要64位的数据类型;2) 在一些机器(32位etc.)上太大太慢;3) 浮点数作为索引显得很怪,一些库函数(string.sub)其实也要求使用整数;4) 在C API中引发混淆因此整数类型才应运而生。整形和浮点型会自动互相转换,因此整数的引入对于Lua程序员来说几乎是透明的,不必过分担心。不过要注意:除法总是产生浮点数,要使用与C类似的整数除法规则,用整除运算符(//);指数运算符总是产生浮点数(2^3=8.0),这是为了统一正负幂运算。

链接:https://www.zhihu.com/question/27961728/answer/38934200

原文地址:https://www.cnblogs.com/Jaysonhome/p/13675520.html