当前位置: 首页 > 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驱动起来的时…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

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

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

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...