• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
19
Lua

Lua数值

发表于 2022-04-19 • 字数统计 2488 • 被 1,518 人看爆

数值常量

4           --> 4
4.57e-3     --> 0.00457     en代表*10的n次方 e-3 表示10的-3次方

整型值和浮点型值类型都是"number",可以相互转换

type(3)         --> number
type(3.5)       --> number
type(3.0)       --> number

1 == 1.0        --> true
-3 == -3.0      --> true
0.2e3 == 200    --> true

需要区分整型值和浮点型值,可使用函数math.type

math.type(3)        --> integer
math.type(3.0)      --> float

Lua中0x开头代表十六进制常量

0xff        --> 255
0x1A3       --> 419

格式化输出,通过函数string.format,并使用参数%a

string.format("%a", 419)        --> 0x1.a3p+8
string.format("%a", 0.1)        --> 0x1.999999999999ap-4

算术运算符

常见的加、减、乘、除、取负数等

15 + 35     --> 28
13.0 + 15.0 --> 28.0

如果两个操作数都是整型值,那么结果也是整型值;否则,结果就是浮点型值。当操作数一个是整型值一个是浮点型值时,Lua语言会在进行算术运算前先将整型值转换为浮点型值:

13.0 + 25   --> 38.0
-(3 * 6.0)  --> -18.0

两数相除,不一定是整数,所以除法不遵循上述规则,除法运算符永远是浮点型

3.0 / 2.0   --> 1.5
3 / 2       --> 1.5
6 / 2       --> 3.0

Lua5.3针对整数除法引入了称为floor除法的新算术运算符//
floor除法会对得到的商翔负无穷取整,从而保证结果是一个整数
规则 :如果操作数都是整型值,那么结果就是整型值,否则就是浮点值(其值是一个整数)

3 // 2      --> 1
3.0 // 2    --> 1.0
6 // 2      --> 3
6.0 // 2.0  --> 3.0

取模也遵循上述规则

x = math.pi
x - x % 0.01        --> 3.14
x - x % 0.001       --> 3.141

幂运算

20 ^ 2      --> 400.0

关系运算符

<、>、<=、>=、==、~= 都是Boolean类型

~=用于不相等

数学库

Lua提供标准数学库math

函数math.random用于生成伪随机数,默认范围是[0, 1)

取整函数
floor : 向负取无穷取整
ceil:向正无穷取整
modf:向零取整,也会返回小数部分

math.floor(3.3)     --> 3
math.floor(-3.3)    --> -4
math.ceil(3.3)      --> 4
math.ceil(-3.3)     --> -3
math.modf(3.3)      --> 3       0.3
math.modf(-3.3)     --> -3      -0.3
math.floor(2^70)    --> 1.1805916207174e+021

整型强制转浮点型
可用增加0.0的方法

-3 + 0.0            --> 3.0

绝对值超过整型值,可能会导致浮点型精度损失

浮点型转整型,可通过math.tointeger

math.tointeger(-258.0)      --> -258
math.tointeger(2^30)        --> 1073741824
math.tointeger(5.01)        --> nil     不是整数值
math.tointeger(2^64)        --> nil     超出范围    Lua中整型值范围是64位,最大值是2^63 - 1

运算符优先级

^
一元运算符(-、#(返回字符长度,如:#"Hello"返回5)、~、not)
*  /  //  %
+  -
.. (拼接字符串,如:"Hello".."World"="HelloWorld",其它语言是加法运算符)
<<  >> (按位移位)
& (按位与)
~ (按位异或)
<  >  <=  >=  ~=  ==
and
or

二元运算符中,除了幂运算(^)和连接操作符(..)是有结合外,其它运算符都是左结合

a + i < b / 2 + 1     等价  (a + i) < ((b / 2) + 1)
5 + x^2 * 8           等价  5 + ((x^2) * 8)
a < y and y <= z      等价  (a < y) and (y <== z)
分享到:
Lua字符串
Lua入门
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 3,815次看爆
  • JAVA_HOME环境配置问题 3,524次看爆
  • AssetBundle使用 3,269次看爆
  • VSCode配置C++开发环境 3,041次看爆
  • Lua反射 2,994次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图