lua入门教程:math

在Lua中,math库是一个非常重要的内置库,它提供了许多用于数学计算的函数。这些函数可以处理各种数学运算,包括基本的算术运算、三角函数、对数函数、随机数生成等。结合你之前提到的Lua中的数字遵循IEEE 754双精度浮点标准,我们可以更深入地了解math库在Lua中的作用和使用方法。

一、math库的基本介绍

math库是Lua语言的一个标准库,它包含了一系列用于数学计算的函数。这些函数都是基于C语言的标准数学库实现的,因此具有很高的计算精度和效率。

二、math库中的常用函数

  1. 基本数学函数

    • math.abs(x):返回x的绝对值。
    • math.sqrt(x):返回x的平方根。如果x是负数,将返回NaN(Not a Number)。
    • math.pow(x, y):返回x的y次幂。注意,在Lua 5.3之前,这个函数是math.exp(y * math.log(x))的别名,可能会因为浮点数精度问题而产生误差。从Lua 5.3开始,math.pow被实现为直接调用C库函数,提高了精度和效率。
    • math.log(x):返回x的自然对数(以e为底的对数)。
    • math.log10(x):返回x的常用对数(以10为底的对数)。
  2. 三角函数

    • math.sin(x):返回x的正弦值,其中x是以弧度为单位的。
    • math.cos(x):返回x的余弦值,其中x是以弧度为单位的。
    • math.tan(x):返回x的正切值,其中x是以弧度为单位的。
    • math.asin(x):返回x的反正弦值,结果是以弧度为单位的。
    • math.acos(x):返回x的反余弦值,结果是以弧度为单位的。
    • math.atan(x):返回x的反正切值,结果是以弧度为单位的。
  3. 取整和取余函数

    • math.floor(x):返回不大于x的最大整数(向负无穷取整)。
    • math.ceil(x):返回不小于x的最小整数(向正无穷取整)。
    • math.modf(x):返回x的整数部分和小数部分,结果是一个包含两个值的表,第一个值是整数部分,第二个值是小数部分。
    • math.fmod(x, y):返回x除以y的余数,其结果的符号与x相同(与%运算符不同)。
  4. 随机数生成函数

    • math.random():返回一个[0, 1)之间的随机浮点数。
    • math.randomseed(x):设置随机数生成器的种子为x。如果不设置种子,每次运行程序时生成的随机数序列都是相同的。
  5. 其他函数

    • math.max(x, ...):返回给定参数中的最大值。
    • math.min(x, ...):返回给定参数中的最小值。
    • math.type(x)(Lua 5.3及以后版本):返回x的数学类型,可能是"integer""float""nan"等。
    • math.tointeger(x)(Lua 5.3及以后版本):尝试将x转换为整数,如果转换失败则返回nil
    • math.tofloat(x)(Lua 5.3及以后版本):尝试将x转换为浮点数,如果转换失败则返回nil

三、math库的使用示例

以下是一个使用math库中函数的简单示例:

local math = require("math")-- 基本数学函数
print(math.abs(-5))  -- 输出: 5
print(math.sqrt(16))  -- 输出: 4
print(math.pow(2, 3))  -- 输出: 8
print(math.log(10))  -- 输出: 自然对数,约等于2.302585-- 三角函数
print(math.sin(math.pi / 2))  -- 输出: 1
print(math.cos(math.pi))  -- 输出: -1
print(math.tan(math.pi / 4))  -- 输出: 1-- 取整和取余函数
print(math.floor(3.7))  -- 输出: 3
print(math.ceil(3.1))  -- 输出: 4
local intPart, fracPart = math.modf(3.14)
print(intPart, fracPart)  -- 输出: 3 0.14
print(math.fmod(5, 3))  -- 输出: 2-- 随机数生成函数
math.randomseed(os.time())  -- 设置随机数种子为当前时间
print(math.random())  -- 输出一个[0, 1)之间的随机浮点数-- 其他函数
print(math.max(1, 2, 3, 4, 5))  -- 输出: 5
print(math.min(1, 2, 3, 4, 5))  -- 输出: 1

通过上述教程,你可以了解Lua中math库的基本用法和常用函数。这些函数可以帮助你进行各种数学计算,提高编程的效率和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明

参考 《element plus 使用 icon 图标(两种方式)》使用 icon 升级 Vue2 升级 Vue3 项目时,遇到命名时的实心与空心点差异! ElementUI: 实心是 el-icon-more空心是 el-icon-more-outline ElementPlus: 实心是 el-icon-more-fill…

RWKV 通过几万 token 的 CoT 解决几乎 100% 的数独问题(采用 29M 参数的小模型)

RWKV 做 CoT 特别有优势,因为推理速度和显存占用与上下文无关。即使做几百万 token 的 CoT 也不会变慢或额外消耗显存。 RWKV 社区开发者 Jellyfish042 训练了一个用于解决数独谜题的专用 RWKV 模型 Sudoku-RWKV ,项目的训练代码和数据制作脚本均已开源…

postgres+timescaledb--离线安装,centos7.9

操作系统是centos7.9,使用的hper-V,安装的虚拟机环境,安装好操作系统之后,让系统不连外网后直接按下方操作安装。 方式1,使用压缩包,复杂一点。(第一种方式暂时没有安装timescaledb) 装备安装…

MyBatis xml 文件中 SQL 语句的小于号未转义导致报错

问题现象 在 MyBatis 的 xml 文件中添加了一个 SQL 语句 <select id"countXxx" resultType"int">select count(*) from t1 where count < 3 </select>启动 Spring Boot 应用程序后报错&#xff1a; Caused by: org.apache.ibatis.builde…

深入剖析输入URL按下回车,浏览器做了什么

DNS 查询 首先,是去寻找页面资源的位置。如果导航到https://example.com, 假设HTML页面被定位到IP地址为93.184.216.34 的服务器。如果以前没有访问过这个网站&#xff0c;就需要进行DNS查询。 浏览器向域名服务器发起DNS查询请求&#xff0c;最终得到一个IP地址。第一次请求…

ceph介绍和搭建

1 为什么要使用ceph存储 什么是对象存储&#xff1f; 对象存储并没有向文件系统那样划分为元数据区域和数据区域&#xff0c;而是按照不同的对象进行存储&#xff0c;而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…

这些场景不适合用Selenium自动化!看看你踩过哪些坑?

Selenium是自动化测试中的一大主力工具&#xff0c;其强大的网页UI自动化能力&#xff0c;让测试人员可以轻松模拟用户操作并验证系统行为。然而&#xff0c;Selenium并非万能&#xff0c;尤其是在某些特定场景下&#xff0c;可能并不适合用来自动化测试。本文将介绍Selenium不…

AI大模型在尽职调查中的应用场景与客户案例

应用场景 1. 企业IPO尽职调查中的文档处理与合规审查 在券商投行进行企业IPO尽职调查过程中&#xff0c;企业需要提交大量的财务报表、历史沿革文件、法律合同等资料。这些文件涉及多个部门&#xff0c;往往存在信息分散、合规性复杂、数据量庞大等问题。思通数科的AI能力平…

[C++]内联函数和nullptr

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…

工业4.0时代下的人工智能新发展

摘要&#xff1a;随着德国工业4.0时代以及中国制造2025的提出&#xff0c;工业智能化的改革的时代正逐渐到来&#xff0c;然而我国整体工业水平仍然处于工业2.0水平。围绕工业4.0中智能工厂、智能生产、智能物流这三大主题&#xff0c;结合国内外研究现状&#xff0c;对人工智能…

一步一步从asp.net core mvc中访问asp.net core WebApi

"从asp.net core mvc中访问asp.net core WebApi"看到这个标题是不是觉得很绕口啊&#xff0c;但的确就是要讲一讲这样的访问。前面我们介绍了微信小程序访问asp.net core webapi(感兴趣的童鞋可以看看前面的博文有关WEBAPI的搭建)&#xff0c;这里我们重点不关心如何…

【Python】关于python中overload装饰器详解

Python不像C、Java等语言可以进行函数的重载。Python是不可以进行函数重载的。下面的例子&#xff0c;虽然我们定义了三个test函数&#xff0c;但是在局部命名空间下&#xff0c;只有一个test函数&#xff0c;就是最有一个&#xff0c;也就是说最后一个test覆盖了前两个test。 …

JVM学习之路(5)垃圾回收

目录 Java垃圾回收 方法区回收 方法区的回收 堆内存回收 引用计数法和可达性分析算法 查看GC Root 五种对象引用 软引用 ​编辑 弱引用 虚引用和终结器引用 垃圾回收算法&#xff1a; 垃圾回收算法的历史和分类 垃圾回收算法的评价标准 标记清除算法 复制算法 标记整理算法 分代…

ubuntu 20.04 NVIDIA驱动、cuda、cuDNN安装

1. NVIDIA驱动 系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改。该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动。 运行nvidia-smi: NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the lat…

Ubuntu18.04+ROS环境+moveit UR5机械臂仿真

目录 仿真环境&#xff1a; 1.下载Universal Robots机器人功能包 2.运行 Gazebo中的仿真模型 3.运行moveit运动规划 4.运行rviz并进行轨迹规划 仿真环境&#xff1a; 本文使用版本&#xff1a;Ubuntu18.04 ros版本&#xff1a;ros-melodic-desktop-full&#xff0c;安装…

C++11新特性(二)

目录 一、C11的{} 1.初始化列表 2.initializer_list 二、可变参数模版 1.语法与原理 2.包扩展 3.empalce接口 三、新的类功能 四、lambda 1.语法 2.捕捉列表 3.原理 五、句装器 1.function 2.bind 一、C11的{} 1.初始化列表 C11以后想统⼀初始化⽅式&#xff0…

Flutter 小技巧之 Shader 实现酷炫的粒子动画

在之前的《不一样的思路实现炫酷 3D 翻页折叠动画》我们其实介绍过&#xff1a;如何使用 Shader 去实现一个 3D 的翻页效果&#xff0c;具体就是使用 Flutter 在 3.7 开始提供 Fragment Shader API &#xff0c;因为每个像素都会过 Fragment Shader &#xff0c;所以我们可以通…

实现3D热力图

实现思路 首先是需要用canvas绘制一个2D的热力图&#xff0c;如果你还不会&#xff0c;请看json绘制热力图。使用Threejs中的canvas贴图&#xff0c;将贴图贴在PlaneGeometry平面上。使用着色器材质&#xff0c;更具json中的数据让平面模型 拔地而起。使用Threejs内置的TWEEN&…

2. Sharding-JDBC广播表和绑定表操作

1. 广播表实战 ⼴播表概念 1. 指所有的分⽚数据源中都存在的表&#xff0c;表结构和表中的数据在每个数据库中均完全⼀致。 2. 适⽤于数据量不⼤且需要与海量数据的表进⾏关联查询的场景。 3. 例如&#xff1a;字典表、配置表。注意 1. 分库分表中间件&#xff0c;对应的数据…

【C++打怪之路Lv13】- “继承“篇

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…