lua学习之math库

mark下这个表,方便以后在开发中使用。。。

--把秒数转化为“时:分:秒”的格式
local function formatTime(time)
    local hour = math.floor(time/3600);
    local minute = math.fmod(math.floor(time/60), 60)
    local second = math.fmod(time, 60)
    local rtTime = string.format("%s:%s:%s", hour, minute, second)
    return rtTime
end 

上面的math.fmod和取余符号%有什么区别呢?

print(15%4,math.fmod(15,4))
--输出:0.1    0.1

另外可以对小数进行求余运算:
print(3.1%1.5,math.fmod(3.1,1.5))
--输出:0.1    0.1

这样看来2个是没有区别的,但是:
print(-2%3,math.fmod(-2,3))
--输出:1,-2

因为 y%x运算总是将y/x的值向下取整,而math.fmod(y,x)是将y/x的值向0取整,所以-2%3得到的商是math.floor(-2/3)=-1,余数为1,而math.fmod(-2,3)得到的商是math.ceil(-2/3)=0,余数是-2。

总之当y/x为负数数,%和math.floor会用不同的取整方式,故而有不同的余数。
时间: 2024-08-06 07:16:06

lua学习之math库的相关文章

lua学习笔记之类型和值

Lua学习笔记之类型和值 1.全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil 如果需要删除一个全局变量,只需要将变量赋值为nil 2.词法约定 标识符:字母或者下划线开头的字母.下划线.数字序列,最好不要使用下划线家大写字母的标识符,因为lua的保留字也是这样的. 3.命令行方式 Lua[options][script[args]] -e:直接将命令传入lua Prompt>lua –e "print(

lua学习项目笔记

这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAPI部分的时候发现难度一下子提升了,有种难以理解的感觉,而且这本书没有相对应的练习,只是看书没有进行相应的实践,确实难度比较大.这里先暂缓推进这本书的进程,决定拿一下小的项目来试试写lua代码的感觉,写完这个项目在回去体会lua程序设计这本书,这样可能效果会更好一些.这里我会列出项目描述,而且会记录完成这个项目

Lua学习(3)——控制结构

Lua提供了一组传统的,小巧的控制结构,包括用于条件执行的if,用于迭代的while.repeat和for.所有的控制结构都有一个现实的终止符号:if for while 都以end结尾,repeat以until作为结尾. 控制结构中的条件表达式可以使任何的值,Lua将所有false和nil的值视为“真”. 1. if then else语句 if a<0 then a=0 end if a<b then return a else return b end 嵌套的if,可以使用elseif

Lua学习笔记(六):函数-续

Lua中的函数是带有词法定界(lexical scoping)的第一类值(first-class values).第一类值指:在Lua中函数和其他值(数值.字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值.词法定界指:嵌套的函数可以访问他外部函数中的变量.这一特性给Lua提供了强大的编程能力. Lua中关于函数稍微难以理解的是函数也可以没有名字,匿名的.当我们提到函数名(比如print),实际上是说一个指向函数的变量,像持有其他类型的变量一样:

Lua学习笔记(五):函数

函数有两种用途: 1).完成指定的任务,这种情况下函数作为调用语句使用: 2).计算并返回值,这种情况下函数作为赋值语句表达式使用. 1 function func_name (arguments-list) 2 statements-list; 3 end; 4 5 --调用函数的时候,如果参数列表为空,必须使用()表明是函数调用 6 print(8*9, 9/8) 7 a = math.sin(3) + math.cos(10) 8 print(os.date()) 9 10 --上述规则有

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含

Lua学习 1) —— Android调用变量取值与赋值

2014-07-08 Lua脚本语言,嵌入在App中扩展开发是很不错的. 关于Android与Lua的环境搭配,我直接下载别人编好的.so与.jar(放到libs下就好了) 下面简单介绍一下Android调用Lua中的变量以及赋值 LuaState mLuaState; mLuaState = LuaStateFactory.newLuaState(); mLuaState.openLibs();//加载库 mLuaState.LdoString("x = 101");//执行一段lu

Lua学习(4)——函数

在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}.    Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符.表达式o.foo(o,x)的另一种写法是o:foo(x).冒号操作符使调用o.foo时将o隐含的作

Lua学习笔记9:多文件

一 终端中执行多个文件:-l 加入在文件一中定义了一个变量,在另一文件中输出这个变量,代码如下: --file1.lua num = 100 --file2.lua print(num) 终端输入(注意:不是lua命令行): lua -lfile1 -lfile2 注意:不要加上文件后缀名.lua 二 命令行中加载文件 --lib.lua function norm(x, y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twic