[lua]紫猫lua教程-命令宝典-L1-01-03. 数值数据


lua5.3在线手册地址  https://cloudwu.github.io/lua53doc/contents.html#contents 其实我们直接啃手册就够了 推荐如果有基础的先啃手册再看紫猫教程 能节约很多时间

L1[数值]01. 数值写法


小知识:zeroBrance studio工具配置紫猫老师的函数 可以实现按键下的traceprint的基本功能

1.可以显示reaceprint 触发所在的文件名 行数 和 调试的内容

2.在反馈信息区域双击该条反馈 可以快速的跳转到对应的traceprint的位置  还是挺好用的

3 只限于在zeroBrance studio  配合紫猫的traceprint函数

4 traceprint 和print一样都支持 print(x,y,z) 可以同时输出多个各种类型变量  traceprint(10^2,11,23,432,45345,12,"|",34)

function traceprint(...)
    local info = debug.getinfo(2)
    local line = string.format("%s:%d:", info.source:match(".*\\([^\\]*)"), info.currentline)
    print(line, ...)
end


使用注意:文件名尽量不要用中文 lua下尽量用英文 如果用了中文 会出现一些意外 比如上面的双击traceprint跳转到位置会失效 真的要学好英文了 我的天哪

image


小知识:lua下的数值的各种表示形态

1.整数 小数 3 3.1415926 之类的

2.科学计数法 0.314e1=3.14

3十六进制 0x     traceprint(0x4d2)=》1234      进制转换 https://tool.lu/hexconvert/  不过这个转换 有小数点的转化存在问题 不过一般情况下不会用到带小数点的数值转化为十六进制的

4 十六进制的也支持小数和指数的方式 但是我看了下手册  感觉如此扭曲的十六进制的表示方式  觉得没什么用


小知识:lua数值运算中的自动转化

正常的运算中 除了除法和乘方 其他的运算表达式中 如果参与运算的数值有浮点数 那么结果就是浮点数 这不废话么

除法和乘方中的计算 是先把参与运算的数值转化为浮点数再计算 结果必定是浮点数  想起了当前学校里学习c语言的时候


123

L1[数值]02. 十六进制数值

没什么说的 十六进制的浮点数写起来麻烦 不说了

L1[数值]03. 算术运算符


没什么说的 加减乘除 求余数(%) 求结果整数部分(//) 乘方 (^)  还涉及到了数值计算的自动转换的东西 之前也说了

https://cloudwu.github.io/lua53doc/manual.html#3.4.1  手册说的足够清楚 没什么多余的


了解一下 //是5.3独有的取整运算符 之前版本没有 以前版本用math.modf()函数来处理 

为何不用floor()  floor只是取出整数部分 但是小数部分可能我们也需要用到 而math.modf()函数却可以把整数部分和小数部分都取出来

xx,yy=math.modf(10/3)

traceprint(xx,yy)

结果 test5.lua:18:    3    0.33333333333333



顺便提一下 floor函数 是取数值的整数部分 但是如果想要这个函数会自动四舍五入 那么就

print(flloor(3.14+0.5))--在取整数值上加0.5可以完美解决不会四舍五入的问题



注意:虽然这里说的是5.3的语法 但是按键插件其实是5.2的lua版本

L1[数值]04. 关系运算符

没什么说的

>

<

>=

<=

== 等于 而且是不但是内容一致 类型也要一致

~= 不等于 注意不是!= 而是~=


注意:关系表达式返回的不是true就是false


特殊情况了解:整数2和浮点数2.0 是否相等 

相等 他们内容是一样的 都是2 而且都是数值类型 而浮点数和整数都是属于数值类型 lua里面数值只有1个类型 数值型

traceprint(2==2.0)==》true

L1[数值]05. 逻辑运算符and


1.false和nil是false 其他全是true

2 and or 和按键下的不一样 按键下逻辑表达式返回的不是true就是false 但是lua下的逻辑表达式返回的是参与运算的项的内容

and第一位运算项为false 则返回第一项内容 不然返回第二项内容 (注意第一位为false 那么就不会运行第二项表达式)

or第一个运算项为true 则返回 第一项内容 否则返回第二项内容(注意第一位为true那么就不会运行第二项表达式)

not 永远返回true或者false 没得说

老师这教程果然是针对新手的  硬生生的讲了两节课 。。。

细节自己查手册 真的写的很详细了又精干了

L1[数值]05. 逻辑运算符or与not


123

猜你喜欢

转载自www.cnblogs.com/zjl8455482/p/11166361.html