Java Math函数之算术运算宝典:探索数字世界的基石

1. 概述

在Java中,Math类提供了丰富的静态方法用于执行基本算术运算。这些方法使得开发者能够轻松地进行加法、减法、乘法、除法等基本的数学运算,无需自己编写复杂的算法。Math类中的算术运算方法不仅支持整数运算,还支持浮点数运算,为开发者提供了极大的便利。


2. 用途

Math类中的基本算术运算方法广泛应用于各种场景,如科学计算、数据处理、图形渲染等。无论是进行简单的数值计算,还是构建复杂的数学模型,这些算术运算方法都是不可或缺的。


3. 常用方法

3.1 Math.abs(a)
  • abs(int a) / abs(long a) / abs(float a) / abs(double a)
    • 概述:返回参数的绝对值。
    • 用途:用于获取一个数的正值,忽略其符号。
    • 参数说明:接受一个int、long、float或double类型的参数。
    • 代码示例:
int negativeNumber = -10;  
int absoluteValue = Math.abs(negativeNumber);  
System.out.println("The absolute value of " + negativeNumber + " is " + absoluteValue);
3.2 Math.max(num1, num2)
  • max(int a, int b) / max(long a, long b) / max(float a, float b) / max(double a, double b)
    • 概述:返回两个参数中的较大值。
    • 用途:用于比较两个数的大小,并返回较大的那个数。
    • 参数说明:接受两个相同类型的参数(int、long、float或double),并返回它们中的较大值。
    • 代码示例:
int num1 = 5;  
int num2 = 10;  
int maxValue = Math.max(num1, num2);  
System.out.println("The maximum value between " + num1 + " and " + num2 + " is " + maxValue);
3.3 Math.min(num1, num2)
  • min(int a, int b) / min(long a, long b) / min(float a, float b) / min(double a, double b)
    • 概述:返回两个参数中的较小值。
    • 用途:用于比较两个数的大小,并返回较小的那个数。
    • 参数说明:接受两个相同类型的参数(int、long、float或double),并返回它们中的较小值。
    • 代码示例:
double num1 = 15.5;  
double num2 = 10.2;  
double minValue = Math.min(num1, num2);  
System.out.println("The minimum value between " + num1 + " and " + num2 + " is " + minValue);
3.4 Math.addExact(num1, num2)
  • addExact(int x, int y) / addExact(long x, long y)
    • 概述:返回两个参数的和,如果结果溢出,则抛出ArithmeticException。
    • 用途:用于执行精确的整数加法,并处理可能的溢出情况。
    • 参数说明:接受两个相同类型的参数(int或long),并返回它们的和。如果结果超出相应类型的范围,则抛出异常。
    • 代码示例(请注意,为了演示目的,此示例故意使用可能导致溢出的值):
try {  int largeNumber1 = Integer.MAX_VALUE;  int largeNumber2 = 10;  int sum = Math.addExact(largeNumber1, largeNumber2);  System.out.println("The sum is " + sum);  
} catch (ArithmeticException e) {  System.out.println("Overflow occurred: " + e.getMessage());  
}
3.5 Math.subtractExact(num1, num2)
  • subtractExact(int x, int y) / subtractExact(long x, long y)
    • 概述:返回第一个参数减去第二个参数的差,如果结果溢出,则抛出ArithmeticException。
    • 用途:用于执行精确的整数减法,并处理可能的溢出情况。
    • 参数说明:接受两个相同类型的参数(int或long),并返回它们的差。如果结果超出相应类型的范围,则抛出异常。
    • 代码示例(同样为了演示可能的溢出):
try {  int largeNumber = Integer.MIN_VALUE;  int smallNumber = -10;  int difference = Math.subtractExact(largeNumber, smallNumber);  System.out.println("The difference is " + difference);  
} catch (ArithmeticException e) {  System.out.println("Underflow occurred: " + e.getMessage());
}
3.6 Math.multiplyExact(num1, num2)
  • multiplyExact(int x, int y) / multiplyExact(long x, long y)
    • 概述:返回两个参数的乘积,如果结果溢出,则抛出ArithmeticException。
    • 用途:用于执行精确的整数乘法,并处理可能的溢出情况。
    • 参数说明:接受两个相同类型的参数(int或long),并返回它们的乘积。如果结果超出相应类型的范围,则抛出异常。
    • 代码示例(同样为了演示可能的溢出):
try {  int factor1 = Integer.MAX_VALUE;  int factor2 = 2;  int product = Math.multiplyExact(factor1, factor2);  System.out.println("The product is " + product);  
} catch (ArithmeticException e) {  System.out.println("Overflow occurred: " + e.getMessage());  
}

3.7 Math.sqrt(number)
  • sqrt(double a)
    • 概述:返回参数a的平方根。
    • 用途:a的平方根,返回类型为double。
    • 参数说明:a - 一个非负double值。
    • 代码示例:
public class SquareRootExample {  public static void main(String[] args) {  double number = 9.0;  double squareRoot = Math.sqrt(number);  System.out.println("The square root of " + number + " is " + squareRoot);  }  
}
3.8 Math.cbrt(number)
  • cbrt(double a)
    • 概述:返回参数a的立方根。
    • 用途:a的立方根,返回类型为double。
    • 参数说明:a - 一个double值。
    • 代码示例:
public class CubeRootExample {  public static void main(String[] args) {  double number = 27.0;  double cubeRoot = Math.cbrt(number);  System.out.println("The cube root of " + number + " is " + cubeRoot);  }  
}

4. 注意事项

  • 在使用Math类中的算术运算方法时,应注意数据类型和范围,以避免溢出或下溢错误。
  • 当处理可能超出基本数据类型范围的大数时,应考虑使用BigInteger或BigDecimal类。
  • sqrt方法接受的参数必须是非负数,否则将返回NaN(Not a Number)。
  • cbrt方法可以接受任何实数作为参数,包括负数。

5. 总结

Java中的Math类提供了丰富的算术运算方法,使得开发者能够轻松地进行基本的数学运算。通过使用这些方法,我们可以执行加法、减法、乘法、除法等操作,并处理可能的溢出情况。这些算术运算方法是构建各种数学模型、进行科学计算和数据处理的基础工具。掌握这些方法的使用,将使我们能够更高效地处理数字数据,并在Java程序中实现复杂的数学运算。


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

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

相关文章

wps/word中字体安装教程

问题:下载的字体怎么导入wps/word wps或word中没有相应字体,怎么导入。其实方法很简单。 Step 1:下载字体 首先,在网上搜索自己喜欢的字体,然后下载到本地。字体的格式通常是.ttf 下面是我网上找的字体&#xff08…

Tips:对于树模型,新增了一个feature,metric提升了不少,但是该feature的特征重要性不高,如何解释这种现象?

在树模型中,新增一个特征后,模型性能(如metric)显著提升,但该特征在特征重要性排序中并不靠前,这种现象可以从以下几个方面进行解释: 特征交互作用: 树模型能够捕捉到特征间的复杂非…

dat.GUI如何使用和常用方法

什么是dat.GUI? dat.GUI是一个轻量级的用户界面库,用于在Web应用程序中创建可交互的控件。它由Google数据艺术家工作室(Google Data Arts Team)开发,旨在简化数据可视化和实验性界面的开发过程。dat.GUI提供了一组简单…

Python编程的面向对象(二)—类的多态

Python编程的面向对象(二)—类的多态 在面向对象编程中,多态是一种重要的概念,指的是不同类的对象可以对相同的消息作出响应,表现出不同的行为。多态允许使用基类的引用来调用派生类的方法,实现了接口的统一。 多态的特点&#…

CAPL学习之路-TLS函数

The Transport Layer Security (TLS) Protocol,传输层安全协议。通常是基于TCP传输协议基础上的安全认证协议,不用在UDP上。 为什么TLS不用在UDP协议上? UDP本身就不是一个可靠的协议,你在一个不可靠的协议上进行安全认证,就像是没打地基就想确保房子坚固,这可能吗? 常…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

在android系统中fence用于不同模块需要访问同一块buffer的同步,例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。 camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。 camera sync是高通camx框架里面用于各个…

C/C++常用开源库总结

文章目录 库名主要功能和组件语言miniftpd研究简单的ftp服务器Cmuduo的研究目录记录学习muduo库的一些笔记Cyaziyazi封装的json解析库、ini解析库、xml解析库、简单的基于TCP的多线程服务器–ZeroMQ––Abseil字符串操作: Abseil 提供了一套强大而灵活的字符串处理工具&#xf…

ROS Node

ROS Node ROS(Robot Operating System)节点是指在ROS中运行的基本单元,它们是一个独立的进程,执行特定的任务,并与其他节点进行通信以完成更复杂的功能。ROS节点是ROS中实现模块化、分布式和可扩展性的关键组件之一。…

【LeetCode】191. 位1的个数

题目链接:191. 位1的个数 题目描述: 解法1:题意很简单就不说了,这里先说一种最简单的解法,首先我们知道一点:n&(n-1)相当于把是将n的二进制位中最低位的1变为了0,其它位保持不变&#xff0…

强制内容在一行显示

强制内容在一行显示 .one {white-space: nowrap;overflow: hidden;text-overflow: ellipsis; /* 可选,当内容超出一行时,用省略号表示 */ }效果

【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例

概率模型在机器学习中的应用:以朴素贝叶斯分类器为例 一、概率模型的基本原理二、朴素贝叶斯分类器的原理与实现三、朴素贝叶斯分类器的应用与挑战四、结论与展望 在大数据与人工智能时代,概率模型在各个领域发挥着至关重要的作用。概率模型以概率论和统…

基于STM32F4系列的ETH IAP在线升级程序

目录 1、前言 2、以太网的移植(无操作系统) 3、移植FATS 系统 4、移植ETH 驱动及 DP83848驱动 5、Tftp 服务程序 6、注意事项 ​7、代码 资料下载地址:基于STM32F4系列的ETH IAP在线升级程序 1、前言 此bootloader程序可以通过http…

网络爬虫之HTTP原理

** URI和URL URI的全称Uniform Resource Identifier ,即统一资源标志符。URL的全称Uniform Resource Locator 即统一资源定位符。 URL是URI的子集,也就是每一个URL就是URI,但是每一个URI不一定是URL,URI还有一个子类叫URN&#x…

从零开始写 Docker(十二)---实现 mydocker stop 停止容器

本文为从零开始写 Docker 系列第十二篇,实现类似 docker stop 的功能,使得我们能够停止指定容器。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理&#x…

[韭]第一次参加护网行动要注意什么??

前言 为什么要写这篇文章呢,一是对当下安全环境进行一个分析,二是以过来人的身份留下一点经验。 当下安全环境分析 现在这个时代,大家都已经踏上了信息高速公路,可以自己拿搜索引擎搜一下自己知道的大厂裁员情况,有…

油猴脚本:bing 搜索结果居中

文章目录 效果预览脚本使用步骤安装油猴脚本添加脚本 效果预览 脚本 // UserScript // name bing居中 // namespace http://tampermonkey.net/ // version 2024-04-24 // description try to take over the world! // author You // match http…

rust 卸载重新安装 安装

原因:接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境,如果你没有,Rust也能安装成功,只是无法编译代码 C的编译工具有两个,一个是msvc,也就是visual studi…

CTFshow-PWN-栈溢出(pwn44)

64位的 system(); 但是好像没"/bin/sh" 上面的办法不行了,想想办法 检查: 是 64 位程序 ida 反编译 main 函数: 跟进 ctfshow 函数: 存在栈溢出 offset:0xAh8 在前面经验的基础上,这里我们直…

Python-VBA函数之旅-issubclass函数

目录 一、issubclass函数的常见应用场景: 二、issubclass函数使用注意事项: 三、如何用好issubclass函数? 1、issubclass函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页&#xff…

Linux下载及安装OpenSSL

文章目录 前言一、OpenSSL下载二、OpenSSL安装1.上传下载好的安装包到服务器2.解压3.切换目录4.配置config5.编译6.安装7.备份旧版本OpenSSL7.创建软链接8.添加OpenSSL动态链接库9.更新库缓存10.查看OpenSSL版本验证安装是否成功 前言 一般系统会自带有OpenSSL,我们…