【Lua基础系列】之类型与值(nil,number,boolean)详细版--Lua类型转换,取整,产生随机数

                        【Lua基础系列】之类型与值详细版

       大家好,我是Lampard~~

       为了方便自己的学习以及分享学到的内容,所以我即将要开设Lua基础系列的博客

       PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识

 

     话不多说,开始第一讲的内容:Lua的类型与值

       Lua作为在语言中不需要类型定义,而是通过赋值带给变量其自身的类型信息。

       在Lua中有8种基本类型,分别是:nil--空,boolean--布尔,number--数值,string--字符串,userdata--用户数据,function--函数,thread--线程,和table--表。我们可以通过调用print(type(变量))来查看变量的数据类型。

      lua1

 

      接下来我们要对nil,Boolean,number进行详细分析。     

    (1) nil

      nil是一种只有一个nil值的类型,它的主要作用是与其他所有值进行区分。Lua语言使用nil值来表示没有有用的值的情况。全局变量第一次被赋值前的默认值就是nil,将nil赋值给全局变量相当于将其删除

   

    (2) Boolean

      Boolean类型具有两个值,truefalse,他们分别代表了传统的布尔值。不过在Lua中,任何值都能表示条件:Lua定义除了falsenil的值为之外,所有的值都为真,包括0和空字符串

     逻辑运算符:and,or,not

     Lua的逻辑运算中,把Boolean类型里面的nil和false当做假,把其他值当做真

     and和or都遵循着短路求值

   

   对于and来说,如果第一个值为假,则返回第一个值,否则返回第二个值

 1

     对于or来说,如果第一个值为真,则返回第一个值,否则返回第二个值

2

     对于not来说,返回值永远为Boolean

   3

 

  (3)number

    在Lua5.2之前所有的数值都是双精度的浮点型,在Lua5.3之后引入了整形integer。整形的引入是Lua5.3的一个重要标志

    整形浮点型的区别:

    整形:类似1,2,3,4,5.....在其身后不带小数和指数

    浮点型:类似1.2,3.5555,4.57e-3......在其身后带小数点以及指数符号(e)的数字

    我们使用type(3) 和type(3.5)返回的都是num

    但是如果我们调用math库里面的math.type(3)返回的是integer

                                                        math.type(3.5)返回的是float

 

  除了加减乘除之外,Lua语言还提供了向下取整除法(floor除法),取模和指数运算

   对于加+,减-,乘*来说:

   int对int型进行运算,则得到的结果都是int型,但只要两个数字中有一个是float型,则得出来的结果都是float型

4

  对于除/来说:

无论是什么操作,得到的结果永远都是float

5

  float除法//:

  得到的是一个整值,若结果存在小数,则向负无穷截断

 6

   产生随机数(math.random()):

   Lua中产生随机数的三种方式:

  (1)math.random()-- 产生(0~1)的随机值

  (2)math.random(n)-- 产生(1~n)的随机值

  (3)math.random(m,n)-- 产生(m~n)的随机值

 

number类型的取整以及强制转换

   number类型的取整,返回结果为整形值:

  (1)floor()--向负无穷取整

floor(1.5)=1

  (2)ceil() -- 向正无穷取整

ceil(1.5)=2

  (3)modf()--向0取整

modf(1.5)=1
modf(-1.5)=-1

  (4)floor(x+0.5)--四舍五入

  

  number数值类型的强制转换:

  整数类型转化成浮点型:+0.0

  浮点类型转化成整形:math.tointeger()

 

  表示范围:

  最大值math.maxinteger和最小值math.mininteger

  lua中int型和float型都是使用8个字节来存储的,所以他们有最大值和最小值存在。

 当对int最大值加整数1时,会发生回滚,如:

 math.maxinteger+1=math.mininteger

 math.mininteger-1=math.maxinteger

 但是如果当他们加的是浮点型数字时,就不会发生回滚,而是取近似值

math.maxinteger+1.0=math.maxinteger

 math.mininteger-1.0=math.mininteger

                                                      OK,第一篇Lua基础系列到此为止啦,谢谢大家~~

 

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值