Lua的math函数库及一些自定义扩展

时间:2021-08-03 21:19:55

math函数

name describe e.g result
abs 取绝对值 math.abs(-2015) 2015
ceil 向上取整 math.ceil(20.15) 21
floor 向下取整 math.floor(20.15) 20
max 取最大值 math.max(20, 15) 2 0
min 取最小值 math.min(20, 15) 15
pi 圆周率 math.pi 3.14…
pow 计算x的y次幂 math.pow (2, 15) 32768
sqrt 开平方 math.sqrt(1024) 32
fmod 取模 math.fmod(20, 15) 5
modf 取整数,小数部分 math.modf(20.15) 20 15
randomseed 设随机数种子 math.randomseed(os.time())
random 取随机数 math.random(2, 15) 2~15
rad 角度转弧度 math.rad(180) math.pi
deg 弧度转角度 math.deg(math.pi) 180
exp e的x次方 math.exp(4) e ^ 4
log x的自然对数 math.log(e ^ 4) 4
log10 10为底,x的对数 math.log10(1000) 3
frexp 格式化x * (2 ^ y) math.frexp(160) 0.625 8
ldexp 计算 x * (2 ^ y) math.ldexp(0.625,8) 160
sin 正弦 math.sin(math.rad(30)) 0.5
cos 余弦 math.cos(math.rad(60)) 0.5
tan 正切 math.tan(math.rad(45)) 1
asin 反正弦 math.deg(math.asin(0.5)) 30
acos 反余弦 math.deg(math.acos(0.5)) 60
atan 反正切 math.deg(math.atan(1)) 45
math.huge 最大数
math.randomseed(os.time())
i=math.random(1,6)

自定义扩展

-- 最小数值和最大数值指定返回值的范围。
-- @function [parent=#math] clamp
function math.clamp(v, minValue, maxValue)
if v < minValue then
return minValue
end
if( v > maxValue) then
return maxValue
end
return v
end
-- 根据系统时间初始化随机数种子,让后续的 math.random() 返回更随机的值
-- @function [parent=#math] newrandomseed

function math.newrandomseed()
local ok, socket = pcall(function()
return require("socket")
end)

math.randomseed(os.time())

math.random()
math.random()
math.random()
math.random()
end
-- 对数值进行四舍五入,如果不是数值则返回 0
-- @function [parent=#math] round
-- @param number value 输入值
-- @return number#number

function math.round(value)
value = tonumber(value) or 0
return math.floor(value + 0.5)
end
-- 角度转弧度
-- @function [parent=#math] angle2radian

function math.angle2radian(angle)
return angle*math.pi/180
end
-- 弧度转角度
-- @function [parent=#math] radian2angle

function math.radian2angle(radian)
return radian/math.pi*180
end