- Lua 教程
- Lua - 首页
- Lua 基础
- Lua - 概述
- Lua - 环境
- Lua - 基本语法
- Lua - 注释
- Lua - 打印 Hello World
- Lua - 变量
- Lua - 数据类型
- Lua - 运算符
- Lua - 循环
- Lua - 决策
- Lua - 函数
- Lua - 日期和时间
- Lua 数组
- Lua - 数组
- Lua - 多维数组
- Lua - 数组长度
- Lua - 迭代数组
- Lua 迭代器
- Lua - 迭代器
- Lua 列表
- Lua - 在列表中搜索
- Lua 模块
- Lua - 模块
- Lua - 命名空间
- Lua 元表
- Lua - 元表
- Lua 协程
- Lua - 协程
- Lua 文件处理
- Lua - 文件 I/O
- Lua 库
- Lua - 标准库
- Lua - 数学库
- Lua - 操作系统功能
- Lua 有用资源
- Lua - 快速指南
- Lua - 有用资源
- Lua - 讨论
Lua - 数学库
在科学和工程计算中,我们经常需要数学运算,我们可以使用标准 Lua 库 math 来实现。math 库中可用的函数列表如下表所示。
序号 | 库/方法及用途 |
---|---|
1 | math.abs (x) 返回 x 的绝对值。 |
2 | math.acos (x) 返回 x 的反余弦值(以弧度为单位)。 |
3 | math.asin (x) 返回 x 的反正弦值(以弧度为单位)。 |
4 | math.atan (x) 返回 x 的反正切值(以弧度为单位)。 |
5 | math.atan2 (y, x) 返回 y/x 的反正切值(以弧度为单位),但使用两个参数的符号来查找结果的象限。(它也正确地处理 x 为零的情况。) |
6 | math.ceil (x) 返回大于或等于 x 的最小整数。 |
7 | math.cos (x) 返回 x 的余弦值(假定以弧度为单位)。 |
8 | math.cosh (x) 返回 x 的双曲余弦值。 |
9 | math.deg (x) 返回以弧度表示的角度 x 的度数。 |
10 | math.exp (x) 返回 e 的 x 次方。 |
11 | math.floor (x) 返回小于或等于 x 的最大整数。 |
12 | math.fmod (x, y) 返回 x 除以 y 的余数,该余数将商四舍五入到零。 |
13 | math.frexp (x) 返回 m 和 e,使得 x = m2e,e 是整数,m 的绝对值在 [0.5, 1) 范围内(或当 x 为零时为零)。 |
14 | math.huge HUGE_VAL 值,大于或等于任何其他数值的值。 |
15 | math.ldexp (m, e) 返回 m2e(e 应为整数)。 |
16 | math.log (x) 返回 x 的自然对数。 |
17 | math.log10 (x) 返回 x 的以 10 为底的对数。 |
18 | math.max (x, ...) 返回其参数中的最大值。 |
19 | math.min (x, ...) 返回其参数中的最小值。 |
20 | math.modf (x) 返回两个数字,x 的整数部分和 x 的小数部分。 |
21 | math.pi π 的值。 |
22 | math.pow (x, y) 返回 xy。(您也可以使用表达式 x^y 来计算此值。) |
23 | math.rad (x) 返回以度数表示的角度 x 的弧度值。 |
24 | math.random ([m [, n]]) 此函数是 ANSI C 提供的简单伪随机生成器函数 rand 的接口。在不带参数调用时,返回范围 [0,1) 内的均匀伪随机实数。当使用整数 m 调用时,math.random 返回范围 [1, m] 内的均匀伪随机整数。当使用两个整数 m 和 n 调用时,math.random 返回范围 [m, n] 内的均匀伪随机整数。 |
25 | math.randomseed (x) 将 x 设置为伪随机生成器的“种子”:相同的种子会产生相同的数字序列。 |
26 | math.sin (x) 返回 x 的正弦值(假定以弧度为单位)。 |
27 | math.sinh (x) 返回 x 的双曲正弦值。 |
28 | math.sqrt (x) 返回 x 的平方根。(您也可以使用表达式 x^0.5 来计算此值。) |
29 | math.tan (x) 返回 x 的正切值(假定以弧度为单位)。 |
30 | math.tanh (x) 返回 x 的双曲正切值。 |
三角函数
下面显示了一个使用三角函数的简单示例。
main.lua
radianVal = math.rad(math.pi / 2) io.write(radianVal,"\n") -- Sin value of 90(math.pi / 2) degrees io.write(string.format("%.1f ", math.sin(radianVal)),"\n") -- Cos value of 90(math.pi / 2) degrees io.write(string.format("%.1f ", math.cos(radianVal)),"\n") -- Tan value of 90(math.pi / 2) degrees io.write(string.format("%.1f ", math.tan(radianVal)),"\n") -- Cosh value of 90(math.pi / 2) degrees io.write(string.format("%.1f ", math.cosh(radianVal)),"\n") -- Pi Value in degrees io.write(math.deg(math.pi),"\n")
输出
运行上述程序后,我们将获得以下输出。
0.027415567780804 0.0 1.0 0.0 1.0 180
其他常用数学函数
下面显示了一个使用常用数学函数的简单示例。
main.lua
-- Floor io.write("Floor of 10.5055 is ", math.floor(10.5055),"\n") -- Ceil io.write("Ceil of 10.5055 is ", math.ceil(10.5055),"\n") -- Square root io.write("Square root of 16 is ",math.sqrt(16),"\n") -- Power io.write("10 power 2 is ",math.pow(10,2),"\n") io.write("100 power 0.5 is ",math.pow(100,0.5),"\n") -- Absolute io.write("Absolute value of -10 is ",math.abs(-10),"\n") --Random math.randomseed(os.time()) io.write("Random number between 1 and 100 is ",math.random(),"\n") --Random between 1 to 100 io.write("Random number between 1 and 100 is ",math.random(1,100),"\n") --Max io.write("Maximum in the input array is ",math.max(1,100,101,99,999),"\n") --Min io.write("Minimum in the input array is ",math.min(1,100,101,99,999),"\n")
输出
运行上述程序后,我们将获得以下输出。
Floor of 10.5055 is 10 Ceil of 10.5055 is 11 Square root of 16 is 4 10 power 2 is 100 100 power 0.5 is 10 Absolute value of -10 is 10 Random number between 1 and 100 is 0.22876674703207 Random number between 1 and 100 is 7 Maximum in the input array is 999 Minimum in the input array is 1
以上示例只是一些常见示例,我们可以根据需要使用 math 库,因此请尝试使用所有函数以更熟悉它们。