当前位置: 首页 > news >正文

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 灾难恢复&#xff0…...

13_pinctrl子系统

总结 pinctrl作为驱动 iomuxc节点在设备树里面 存储全部所需的引脚配置信息 iomux节点匹配pinctrl子系统 控制硬件外设的时候 要知道有哪些gpio 再看gpio有哪些服用寄存器 接着在程序配置gpio相关寄存器 这样搞效率很低 所以用iomux节点保存所有的引脚组 pinctrl驱动起来的时…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...