数值 - Hero · Lua · Lua程序设计读书笔记
数值常量
- 双精度浮点格式(和JS一样)
- 32位整型和单精度浮点型(5.3版本引入,目前是5.4.6)
- math.type()和type(), math.type能够区别数字类型
算术运算
- + - * / // % ^
// floor除法,结果向下取整, ^是幂运算
关系运算
- < > <= >= == ~=
~= 是不等于
数学库
- math.random()
- math.floor()
- math.ceil()
- math.modf() 向0取整,会返回小数部分作为第二个结果
表示范围
- 最大整数: 2^63 - 1(精简版使用32位)
- 出现溢出时会回环
- 1 / 7 * 7 结果是0.999999994 而不是1(5.1版本测试是1,直接在线上测试是1.0,这个需要再调研下,0.1 + 0.2 = 0.3,总之比JS处理的好多了)
惯例
- 整型总是可以转换为浮点型
- 注意超过最大值(2^53)次时这种转换会出现异常
- 可以通过与0进行按位或运算,可以把浮点型值强制转换为整型值(若值超出范围则会抛出异常)
- 另一种强制转换方式是math.tointeger(), 不是整数或超出范围则返回nil
运算符优先级
数值 - Hero · Lua · Lua程序设计读书笔记
https://wanmeishijie.xyz/notes/hero/lua/Lua程序设计读书笔记/数值/