Java Math类
Java Math 类是 Java 标准库中提供的一个数学计算类,它提供了很多数学函数,如三角函数、指数函数、对数函数等。在实际工作中,Java Math 类常常被用于处理数学计算问题,例如计算复杂的数学公式、实现数学算法等。本文将详细介绍 Java Math 类的作用和实际工作中的用途,并提供一些示例代码。
Java Math 类的作用
Java Math 类是 Java 标准库中的一个类,它提供了很多数学函数和常量。Java Math 类是一个 final 类,因此不能被继承。它包含了以下常量和方法:
常量:
- E:自然对数的底数
- PI:圆周率
方法:
- abs():返回一个数的绝对值
- max():返回两个数中较大的那个数
- min():返回两个数中较小的那个数
- pow():返回一个数的某个次幂
- sqrt():返回一个数的平方根
- sin():返回一个数的正弦值
- cos():返回一个数的余弦值
- tan():返回一个数的正切值
- log():返回一个数的自然对数
- exp():返回一个数的指数值
- ceil():返回一个数的上限整数
- floor():返回一个数的下限整数
- round():返回一个数的四舍五入整数
Java Math 类的用途
Java Math 类常常被用于处理数学计算问题,例如计算复杂的数学公式、实现数学算法等。下面是一些常见的用途:
- 计算复杂的数学公式
Java Math 类提供了很多常用的数学函数和常量,可以用于计算复杂的数学公式。例如,可以使用 Java Math 类中的 pow() 方法来计算一个数的幂次方,使用 sqrt() 方法来计算一个数的平方根,使用 sin() 方法来计算一个数的正弦值等等。下面是一个简单的示例,演示了如何使用 Java Math 类中的方法来计算复杂的数学公式:
public class MathDemo {public static void main(String[] args) {double x = 2.0;double y = 3.0;double z = Math.pow(x, y) + Math.sqrt(x * y) + Math.sin(x * y);System.out.println("z = " + z);}
}
输出结果为:
z = 10.605641292240628
以上代码演示了如何使用 Java Math 类中的方法来计算一个复杂的数学公式。
- 实现数学算法
Java Math 类还可以用于实现各种数学算法,例如统计、数据分析、数值计算等。例如,可以使用 Java Math 类中的 max() 和min() 方法来查找数组中的最大值和最小值,使用 ceil() 和 floor() 方法来进行舍入,使用 round() 方法来进行四舍五入等等。下面是一个简单的示例,演示了如何使用 Java Math 类中的方法来实现数学算法:
import java.util.Arrays;public class MathDemo {public static void main(String[] args) {int[] nums = {3, 5, 1, 9, 2, 8, 4, 7, 6};int max = Arrays.stream(nums).max().getAsInt();int min = Arrays.stream(nums).min().getAsInt();double average = Arrays.stream(nums).average().getAsDouble();int sum = Arrays.stream(nums).sum();int ceil = (int) Math.ceil(average);int floor = (int) Math.floor(average);int round = (int) Math.round(average);System.out.println("max = " + max);System.out.println("min = " + min);System.out.println("average = " + average);System.out.println("sum = " + sum);System.out.println("ceil = " + ceil);System.out.println("floor = " + floor);System.out.println("round = " + round);}
}
输出结果为:
max = 9
min = 1
average = 5.0
sum = 45
ceil = 5
floor = 5
round = 5
以上代码演示了如何使用 Java Math 类中的方法来实现数学算法,包括查找数组中的最大值和最小值、计算数组中元素的平均值和总和、进行舍入等等。
除此之外,Java Math 类还提供了一些其他的方法和常量,包括三角函数、指数函数、对数函数、幂函数、随机数生成等等。下面我们来逐一介绍。
- 三角函数
Java Math 类提供了一系列三角函数,例如 sin()、cos()、tan()、asin()、acos()、atan() 等等。这些函数都以弧度作为参数,并返回一个 double 类型的结果。例如,可以使用 Math.sin() 方法来计算 sin(30°) 的值:
double sinValue = Math.sin(Math.toRadians(30));
需要注意的是,Java Math 类的三角函数中所使用的角度单位为弧度,而不是常用的度数。因此,需要将度数转换为弧度才能使用 Java Math 类中的三角函数。可以使用 Math.toRadians() 方法来将角度转换为弧度。例如,上述代码中将 30° 转换为弧度,然后再使用 Math.sin() 方法来计算其值。
- 指数函数
Java Math 类还提供了指数函数,例如 exp()、log()、log10() 等等。这些函数都以 double 类型的参数作为输入,并返回一个 double 类型的结果。例如,可以使用 Math.exp() 方法来计算 e 的 x 次方的值:
double expValue = Math.exp(2.0);
在这个例子中,Math.exp() 方法计算了 e 的 2 次方的值。
- 对数函数
Java Math 类还提供了对数函数,例如 log()、log10() 等等。这些函数都以 double 类型的参数作为输入,并返回一个 double 类型的结果。例如,可以使用 Math.log10() 方法来计算以 10 为底数的对数的值:
double logValue = Math.log10(100);
在这个例子中,Math.log10() 方法计算了以 10 为底数的 100 的对数的值。
- 幂函数
Java Math 类还提供了幂函数,例如 pow()、sqrt() 等等。这些函数都以 double 类型的参数作为输入,并返回一个 double 类型的结果。例如,可以使用 Math.pow() 方法来计算 x 的 y 次方的值:
double powValue = Math.pow(2, 3);
在这个例子中,Math.pow() 方法计算了 2 的 3 次方的值。
- 随机数生成
Java Math 类还提供了随机数生成的方法,例如 random()、nextInt() 等等。这些方法可以用于生成随机数,并且可以指定随机数的范围。例如,可以使用 Math.random() 方法来生成一个大于等于 0 小于 1 的随机数:
double randomValue = Math.random();
在这个例子中,Math.random() 方法生成了一个大于等于 0 小于 1 的随机数。如果需要生成一个指定范围内的随机数,可以使用 Math.random() 方法和一些简单的算法来实现。例如,下面的代码演示了如何使用 Math.random() 方法和一些算法来生成一个指定范围内的随机数:
// 生成一个大于等于 min,小于 max 的随机整数
int randomInt = (int) (Math.random() * (max - min) + min);// 生成一个大于等于 min,小于 max 的随机浮点数
double randomDouble = Math.random() * (max - min) + min;
在这个例子中,使用 Math.random() 方法生成了一个大于等于 0 小于 1 的随机数,然后通过一些算法将其转换为指定范围内的随机数。需要注意的是,由于 Math.random() 方法返回的是一个 double 类型的值,因此需要将其转换为 int 类型或者 double 类型的值。
总结
Java Math 类提供了一些基本的数学函数和常量,可以用于在 Java 程序中进行数学运算和计算。这些函数和常量包括基本数学函数、常量 PI 和 E、三角函数、指数函数、对数函数、幂函数、随机数生成等等。在实际工作中,Java Math 类经常用于计算和数学运算,例如在科学计算、金融计算、图形计算等领域。需要注意的是,Java Math 类中的一些函数和常量的使用需要注意精度和单位的问题,需要根据实际情况进行选择和使用。
相关文章:
Java Math类
Java Math 类是 Java 标准库中提供的一个数学计算类,它提供了很多数学函数,如三角函数、指数函数、对数函数等。在实际工作中,Java Math 类常常被用于处理数学计算问题,例如计算复杂的数学公式、实现数学算法等。本文将详细介绍 J…...
Javascript -- 加载时间线 正则表达式
js加载时间线 1、创建Document对象,开始解析web页面,解析html元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段的document.readyState ‘loading’ 2、遇到link外部css,创建线程加载,并继续解析文档 3、遇到…...
gdb/git的基本使用
热爱编程的你,一定经常徘徊在写bug和改bug之间,调试器也一定是你随影而行的伙伴,离开了它你应该会寝食难安吧! 目录 gdb的使用 断点操作 运行调试 观察数据 Git的使用 仓库的创建和拉取 .gitignore “三板斧” 常用指令 gd…...
信息安全与数学基础-笔记-④二次同余方程
知识目录二次同余方程的解欧拉判别式Legendre (勒让德符号)二次同余方程的解 什么是二次同余方程的解 注意这里二次同余方程和一次同余方程是不一样的 在x2x^2x2 三 a (mod m) 方程中举例 ↓ 解即剩余类,因为是模m,所以我们在 [ 0, m-1 ]中逐个代入看是…...
Luogu P4447 [AHOI2018初中组]分组
题目链接:传送门 将nnn个可重复的整数分为mmm组,每组中的数必须连续且不重复,使人数最少的组人数最多。 两个最值肯定第一想到二分,每次二分出一个值,判断在这个值为答案的前提下能否完成分组。 在思考判别函数时发现…...
手把手创建flask项目
Flask 框架流程 什么是Flask: Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架 Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy). Flask的核心在于Werkz…...
SpringCloud-4_Eureka服务注册与发现
Eureka作为一个老牌经典的服务注册&发现技术,其设计和理念,也在影响后面的组件。目前主流的服务注册&发现的组件是Nacos当前项目架构问题分析-引出Eureka问题分析:1.在企业级项目中,服务消费访问请求会存在高并发2.如果只…...
【react全家桶】生命周期
文章目录04 【生命周期】1.简介2.初始化阶段2.1 constructor2.2 componentWillMount(即将废弃)2.3 static getDerivedStateFromProps(新钩子)2.4 render2.5 componentDidMount2.6 初始化阶段总结3.更新阶段3.1 componentWillRecei…...
虚拟机安装Windows 10
虚拟机安装Windows 10 镜像下载 方法一:下载我制作好的镜像文件->百度网盘链接 提取码:Chen 方法二:自己做一个 进入微软官网链接 下载"MediaCreationTool20H2" 运行该工具 点击下一步选择路径,等他下载好就欧克了…...
【CMU15-445数据库】bustub Project #2:B+ Tree(下)
Project 2 最后一篇,讲解 B 树并发控制的实现。说实话一开始博主以为这块内容不会很难(毕竟有 Project 1 一把大锁摆烂秒过的历史x),但实现起来才发现不用一把大锁真的极其痛苦,折腾了一周多才弄完。 本文分基础版算法…...
leetcode 困难 —— 外星文字典(拓扑排序)
题目: 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 请你根据该词典还原出此语言中已知的字…...
ubuntu server 18.04使用tensorflow进行ddqn训练全过程
0. 前言 需要使用ddqn完成某项任务,为了快速训练,使用带有GPU的服务器进行训练。记录下整个过程,以及遇到的坑。 1. 选择模板代码 参考代码来源 GitHub 该代码最后一次更新是Mar 24, 2020。 环境配置: python3.8 运行安装脚本…...
2023年全国最新二级建造师精选真题及答案14
百分百题库提供二级建造师考试试题、二建考试预测题、二级建造师考试真题、二建证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 二、多选题 61.已经取得下列资质的设计单位,可以直接申请相应类别施工总承包一级…...
mysql一条语句的写入原理
mysql写入原理 我们知道在mysql数据库最核心的大脑就是执行引擎; 其中的默认引擎Innodb在可靠执行和性能中做出来平衡; innodb支持在事务控制、读写效率,多用户并发,索引搜索方面都表现不俗; innodb如何进行数据写入…...
嵌入式Linux内核代码风格(二)
第九章:你已经把事情弄糟了 这没什么,我们都是这样。可能你的使用了很长时间Unix的朋友已经告诉你“GNU emacs”能 自动帮你格式化C源代码,而且你也注意到了,确实是这样,不过它所使用的默认值和我们 想要的相去甚远&a…...
Spring Boot @Aspect 切面编程实现访问请求日志记录
aop切面编程想必大家都不陌生了,aspect可以很方便开发人员对请求指定拦截层,一般是根据条件切入到controller控制层,做一些鉴权、分析注解、获取类名方法名参数、记录操作日志等。 在SpringBoot中使用aop首先是要导入依赖如下: …...
初学者的第一个Linux驱动
软件环境:Ubuntu20.04 Linux内核源码:3.4.39 硬件环境:GEC6818 什么是驱动?简单来说就是让硬件工作起来的程序代码。 Linux驱动模块加载有两种方式: 1、把写好的驱动代码直接编译进内核。 2、把写好的驱动代码编…...
7. 拼数
1 题目描述 拼数成绩10开启时间2021年09月24日 星期五 18:00折扣0.8折扣时间2021年11月15日 星期一 00:00允许迟交否关闭时间2021年11月23日 星期二 00:00 设有 n个正整数 a[1]…a[n],将它们联接成一排,相邻数字首尾相接,组成一个最大的整…...
Java每天15道面试题 | Redis
redis 和 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高? 区别: 1.mc 可缓存图片和视频。rd 支持除 k/v 更多的数据结构; 2.rd 可以使用虚拟内存,rd 可持久化和 aof 灾难恢复࿰…...
13_pinctrl子系统
总结 pinctrl作为驱动 iomuxc节点在设备树里面 存储全部所需的引脚配置信息 iomux节点匹配pinctrl子系统 控制硬件外设的时候 要知道有哪些gpio 再看gpio有哪些服用寄存器 接着在程序配置gpio相关寄存器 这样搞效率很低 所以用iomux节点保存所有的引脚组 pinctrl驱动起来的时…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
