一 整数和浮点数
①
说明: 具有'十进制小数'或者'指数的数值'会被当作'浮点'数值,'否则'会被当作'整数值'
②
说明:'整数值'和'浮点型值'的类型都是"number"
++++++++++++++'效果'++++++++++++++
所以:它们是可以'互相转化'的
③
整数和浮点数值的类型都是"number",所以它们可以'相互转化'
具有'相同算术值'的'整数值和浮点数值'在Lua语言是'相等'的
④
需求: '区分'整数和浮点数值
二 算术运算
⑤ 特殊场景一
说明:'操作数'一个是'整数型'值、一个是'浮点型'值时,Lua语言会在进行'算术运算前'先将整数型值'转换'为浮点型值
备注:'+'、-、'*'、/ '均可'
⑥ floor除法
特点:'floor除法'会对得到的'商'向'负无穷'取'整'
细节
1)先按照'除法'进行计算-->'除法的规则'
2)如果得到的结果含小数,则向'负无穷'取整数'带小数点',如果是整数,则'原样输出'
<-----------------(-1)--0--1------------------
⑦ 取模运算
'计算方式': a % b == a - (a // b) * b
a % b == a - floor(a / b) * b
细节1: '取模得到的结果'符号永远与'第二个操作数'的符号保持一致-->'符号一致'
需求: 保留'n位'小数-->'n为数字'
x - x % 1e-n
例如: 保留'三位'数字
x - x % 1e-3
需求2: 将任意范围的'角度'归一化到[0,2π)
angle % (2 * math.pi)
二 关系运算符
(1)总体描述
说明1:关系运算符结果都是'boolean'类型
说明2:数值'比较'的时候,永远忽略'子类型-->'interger、float'
三 数学库
math 'module'常用的函数
random、randomseed、floor、ceil、modf
(1)随机数发生器
注意:Lua5.3以后,参数一定要为'整数',否则会'返回错误'
Lua生成比较理想的随机数的方法
说明1:'randomseed'用于设置'伪随机数'发生器的种子,该函数的'唯一参数'就是数值类型的种子
目的: 尽可能'保证'每次程序运行时'不会'生成'相同的伪随机数'序列
说明2:系统固定'使用1'为种子初始化'伪随机数发生器'
++++++++++++++++++获取'当前系统时间(秒)'作为随机种子++++++++++++++++++
math.randomseed(os.time())
math.randomseed(tostring(os.time()):reverse():sub(1, 7)) –'设置时间种子'
lua math.random伪随机问题浅析
(2)取整函数
说明1: floor(x)-->'向下取整',或者说"向下舍入"、"向零取舍"-->向'负无穷'取整
说明2: ceil(x) -->'天花板'-->'向上取整'-->'向正无穷取整'
说明3: modf(x) -->向'零'方向取整-->返回两个数值-->一个是'整数',一个是'小数'
需求:'四舍五入'
math.floor(x + 0.5)
(3)表示范围
最大数值:2^63 -1
(4)检查一个数字能否被转换成整数
math.tointerger(x)
功能:如果能'转化为整数'则'输出整数'、否则保持'原来的值'不变
三 运算符优先级