• 在Lua5.3版本后,加入了整形,所以在Lua中有整形双精度浮点数
  • 逻辑判断整形浮点型被认为是相等
  • 如果要知道number是整形还是浮点型,则需要用到数学库函数math.type()

    • math.type(3) → integer
    • math.type(3.0) → float

      运算符://

  • Lua5.3加入运算符//

    • 结果一定是整数
    • 除数被除数都为整数时,结果也为整数;否则为浮点数

      模运算的使用

  • 保留小数:x = math.pi

    • 保留2位小数:x = x - x % 0.01 → 3.14
    • 保留3位小数:x = x - x % 0.001 → 3.141

      幂运算:^

  • 结果一定是浮点型

  • x^0.5 → 根号运算

    强制类型转换—math.tointeger(num)

  • 整形与任意浮点进行任意运算转换为浮点型

    • 只有小于2^53整形才可以转换为浮点型;否则会照成精度丢失
  • math.tointeger(num):将浮点型转换整形(只有在可以转换时可转换)

    • math.tointeger(255.0) → 255
    • math.tointeger(255.1) → nil
    • math.tointeger(2^64) → nil

      三角函数:math.sin(red)

  • 三角函数所使用的参数都是弧度制,可以使用deg和rad进行转换

    • math.deg(red):弧度转换为角度
    • math.rad(deg):角度转换为弧度
    • math.sin(math.rad(30)) → 0.5

      最值

  • math.huge:Lua中number的inf,大于lua中的所有number,包括下面两种

  • math.maxinteger:Lua中的最大整型
  • math.mininteger:Lua中的最小整型

    生成随机数

  • math.random():生成一个伪随机数

    • math.random():不带参数,生成(0,1]浮点型伪随机数
    • math.random(n):带一个参数n,生成[1,n]的整形伪随机数
    • math.random(n,m):带两个参数n、m,生成[n,m]整形伪随机数
  • math.randomseed(n):设置一个随机数种子,默认为1;(只要在开始随机之前设定一次
  • 生成一个有效的随机数:
    • math.randomseed(tostring(os.time()):reverse():sub(1,6)):将系统时间移位轮转
  • 注:不设定种子时,生成的是伪随机数,生成结果的规律是固定的 ```lua for i = 1, 3 do — body print(math.random(5)) end print() math.randomseed() for i = 1, 3 do — body print(math.random(5)) end —[[ 生成结果: 5 3 4

5 3 4 —]] ```

取整函数—四舍五入

  • 向下取整:math.floor(num)
  • 向上取整:math.ceil(num)
  • 分离整数和小数:math.modf(num)
    • 返回两个参数:math.modf(3.2) → 3 0.2
  • 四舍五入:math.modf(x+0.5)