Help:Lua/math
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, -0.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。