lua number类型详解和math.floor存在误差的问题
使用type()函数可以获取整型值和浮点型值的类型,返回的都是number(表示数值类型)
print(type(3)) --number
print(type(3.5)) --number
print(type(3.14e3)) --number
**如果想要区分整型值和浮点型值,**可以使用这个函数
print(math.type(3)) --integer
print(math.type(3.5)) --float
print(math.type(3.14e3)) --float
print(0xff) --255
print(0x1A3) --419
print(0x0.2) --0.125
print(0x1p-1) --0.5
print(string.format("%a", 419)) --0x1.a3p+8
print(string.format("%a", 0.5)) --0x1p-1
Lua支持的算术运算有:
Lua 5.3引入整型的主要建议是:开发人员要么选择忽略整型和浮点型二者之间的不同,要么就完整地控制每一个数值的表示。因此,****所有的算术操作符不论操作整型值还是浮点型值,结果都是一样的****
如果两个操作数都是整型值,则结果也是整型值;否则就是浮点型值
当两个操作数的类型不同时,****运算之前会先将整型值转换为浮点型值****
print(3 // 2) -- 1
print(3.0 // 2) -- 1.0
print(6 // 2) -- 3
print(6.0 // 2.0) -- 3.0
print(-9 // 2) -- -5
print(1.5 // 0.5) -- 3.0
local x = math.pi
print(x - x%0.01) -- 3.14
print(x - x%0.001) -- 3.141
-- 角度
local tolerance = 10
function isturnback1(angle)
angle = angle % 360
return (math.abs(angle - 180) < tolerance)
end
print(isturnback1(-180)) -- true
print(isturnback1(90)) -- false
-- 弧度
local tolerance = 0.17
function isturnback2(angle)
-- 这一条语句实现了将任意范围的角度归一化到[0,2π)之间
angle = angle % (2*math.pi)
return (math.abs(angle - math.pi) < tolerance)
end
print(isturnback2(-180)) -- false
print(isturnback2(90)) -- false
print(1.0 == 1) -- true
print(1 == 1) -- true
print(1.1 == 1) -- false
Lua语言提供了标准数学库math,由一组标准的数学函数组成,包括:
print(math.random()) -- 0.001251220703125
-- 可以模拟掷骰子的结果
print(math.random(6)) -- 4
print(math.random(10, 50)) -- 17
print(math.maxinteger) -- 9223372036854775807
print(math.mininteger) -- -9223372036854775808
print(math.maxinteger + 1 == math.mininteger) -- true
print(math.mininteger - 1 == math.maxinteger) -- true
print(-math.mininteger == math.mininteger) -- true
print(math.mininteger // -1 == math.mininteger) -- true
print(12.7-20+7.3) -- -8.8817841970013e-016
print(math.maxinteger + 2) -- -9223372036854775807
print(math.maxinteger + 2.0) -- 9.2233720368548e+018
我们可以通过将整型值加上0.0将其转换为浮点型:
小于2^53(即9007199254740992)的所有整型值的表示与双精度浮点型值的表示一样,对于绝对值超过了这个值的整型值而言,在将其强制转换为浮点型值时可能导致精度损失
print(-3 + 0.0) -- -3.0
print(9007199254740991 + 0.0 == 9007199254740991) --true
print(9007199254740992 + 0.0 == 9007199254740992) --true
-- 9007199254740992 + 1被取整为9007199254740992,因此不相等
print(9007199254740993 + 0.0 == 9007199254740993) --false
print(3.0) --3.0
print(3.0 | 0) -- 3
print(3.0 | 0) -- 报错
print(math.tointeger(-258.0)) -- -258
print(math.tointeger(2^30)) -- 1073741824
-- 不是整数值
print(math.tointeger(5.01)) -- nil
-- 超出范围
print(math.tointeger(2^64)) -- nil
原文链接:https://blog.csdn.net/qq_41453285/article/details/107933437
文章目录 函数是第一类值 非全局函数 词法定界 小试函数式编程 在Lua语言中,函数是严格遵循词法定界的第一类值。 “第一类值”以为这Lua语言中的函数与其他常见类型的值具有同等权限:一个程序可以将某个函数保存到变量中或表中,也可以将某个函数作为参数传递给其他函数,还可以将某个函...
lua function lua八种数据类型 nil 全局变量没被赋值默认为 nil,删除变量就赋值为 nil boolean(bool) false和nil为假,其它都为真 number 实数,可以是整数,浮点数 string 字符串,一旦赋值不能被修改,可以通过方法string.gsub()来修改 function 函数 table 数组、容器 userdata (类,其它语言转换过来就变成u...
Lua是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活...
Lua EmmyLua 注解详解 Why 为了使 IDE 编码体验和强语言相近 让 IDE 提前发现编码错误 BUG 查找更方便 代码阅读更方便 建议 明确字段类型 明确字段访问修饰符 明确方法参数类型 善用 “:” 继承 “|” 或 ","多个 支持格式 –类 —@class MY_TYPE[:PAREN...
Lua Lua语法 Lua 数据类型 Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。 数据类型 描述 nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于fa...
Lua是redis 2.6 版本最大的亮点,通过内嵌对Lua 环境的支持,Redis 解决了长久以来不能高效地处理CAS (check-and-set)命令的缺点,并且可以通过组合使用多个命令,轻松实现以前很难实现或者不能高效实现的模式。...
Lua调试:getinfo详解 getinfo是调试Lua程序时一个很重要很常见的函数,主要用于获取函数调用的基本信息。这个函数的难点在于各个参数的含义。下面一一介绍。 一、函数简介: 1.原型:getinfo(level, arg) 2.调用:debug.getinfo(level, arg) 3.返回值:返回一个包含函数信息的table,table的内容由参数arg决定,包含哪个函数的信息...
Lua 中有八种基本类型: nil, boolean, number, string, function, userdata, thread, and table. Nil 类型只有一种值 nil ,它的主要用途用于标表识和别的任何值的差异 Boolean 类型只有两种值:false 和 true。 nil 和 false 都能导致条件为假 userdata 类型用来将任意 C 数据保存在 Lua...
注:lua5.0以上版本去除了table.getn方法,可以用#tableName代替 Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型,分别为:nil、boolean、number、string、userdata、function、thread和table。函数type可以测试给定变量或者值的类型。 变量没有预定义的类型,每一个变量都可能包含任一种类型的值。 注意上面最后两行,我们...
Lua 数据类型 作者:杨梦鸽 校对:翟舒青 Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。 数据类型 描述 nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于fals...