Help:Lua/math

来自滚动的天空Wiki

math库是Lua标准库中用于进行数学运算的库。这些函数在接收字符串参数时,会自动转化为数字,如果转换失败则会抛出错误。例如math.abs '-3'等价于math.abs(-3)

abs[编辑]

math.abs(x)会返回x的绝对值

ceil[编辑]

math.ceil(x)返回不小于x的最小整数,即向上取整

deg[编辑]

math.deg(x)将弧度角x转化为角度

exp[编辑]

math.exp(x)返回e的x次方,其中e为自然对数的底。

floor[编辑]

math.floor(x)返回不大于x的最大整数,即向下取整

fmod[编辑]

math.fmod(x, y)返回x除以y的余数,并将商舍入到零。比如,math.fmod(10, 3)的值为1。若y为0,则抛出错误。若x为inf、-inf或nan,则返回nan。若x为实数且y为inf或-inf,则直接返回x。

frexp[编辑]

math.frexp(x)会将x拆成a * 2 ^ b)的形式。

huge[编辑]

math.huge表示正无穷大的值。

ldexp[编辑]

math.ldexp( a, b )返回a * 2 ^ b)(b是整数)。

log[编辑]

math.log(x)返回x的自然对数,即

math.log(x,y)返回y为底、x为真数的对数,即

log10[编辑]

math.log10(x)返回x的常用对数,即

max和min[编辑]

math.max(x, ...)返回其参数中的最大值,math.min(x, ...)返回其参数中的最小值。

注意nan的存在可能导致行为未指定(因为nan不大于任何值、不小于任何值也不等于任何值)。如果x为nan,则会返回nan。

这两个函数不会进行数据转换:math.max('12', '3')会根据字符串的比较规则返回'3',而不是像数字那样返回12。如果存在两个值不能进行比较,则会抛出错误。

modf[编辑]

math.modf(x)返回x的整数部分和小数部分。例如,math.modf(-2.5)的返回值为-2, -5。inf和-inf的小数部分视为0。nan的整数部分和小数部分都是nan。

print(math.modf(1/0))
print(math.modf(0/0))

输出:

inf     0.0
nan     nan

pi[编辑]

math.pi即为圆周率π的值3.141592653589793。

pow[编辑]

math.pow(x, y)x ^ y相同。

rad[编辑]

math.rad(x)将角度x转化为弧度角

random[编辑]

math.random(m, n)返回伪随机数

参数m、n可省略,但是如果指定了,则必须能够转化为整数。

  • 没有参数时返回区间内的实数。
  • 有一个参数时返回区间内的整数。
  • 有两个参数时返回区间内的整数。

注意Lua 5.1中存在一个bug:此函数使用带符号的整数而非不带符号的整数,例如,math.random(0, 2^32-1)math.random(0, 2^31-1)都不正确。

请注意请勿在页面中随意加入存在随机性的内容。

randomseed[编辑]

用法:math.randomseed(x, y),x和y可省略,但必须是整数。

将伪随机数生成器的种子设为x。此函数存在一些和C语言有关的问题,一般不建议使用。

sqrt[编辑]

math.sqrt(x)返回x的平方根,相当于x^0.5。不支持复数运算,因此对负数求平方根会返回nan。

三角函数[编辑]

math.sin(x)math.cos(x)math.tan(x)分别表示弧度角x的正弦、余弦和正切。Lua不支持正割、余割和余切,可以使用倒数表示。

可以计算math.pi/2)的正切值,但是存在误差。

双曲函数[编辑]

math.sinh(x)math.cosh(x)math.tanh(x)分别表示x的双曲正弦、双曲余弦和双曲正切。Lua中没有双曲函数的反函数。

反三角函数[编辑]

math.asin(x)math.acos(x)math.atan(x)分别表示x的反正弦值、反余弦值和反正切值(弧度制)。math.huge的反正切值为,-math.huge的反正切值为

math.atan2(y, x)返回y/x(x可以为0)的反正切值(弧度制,区间内),并根据y和x的正负来决定角度所在的象限。用坐标语言表示,则为在平面直角坐标系中,将x轴正半轴逆时针旋转到点(y, x)时的旋转角度(顺时针旋转则为负角度),也就是转化为极坐标后的θ值。x可以省略,默认为1。