Java 数学 subtractExact(long x, long y) 方法

data structurec++programming

我们将讨论 Java 语言中的 Java 数学 subtractExact(long x, long y) 方法,并了解其功能和工作原理。

subtractExact() 是 Java 数学库中的一个内置函数。该函数返回作为参数传递的两个参数之间的差值。当返回值超出特定数据类型的值范围时,函数将返回异常。

subtractExact() 函数的语法

long a;
long b;

long subtractExact(long a, long b);

函数中传递的参数是 a 和 b,它们都是长整型数据。函数返回一个长整型值,该值等于函数中传递的参数之差,即 a-b。当函数返回的值溢出传递参数的数据类型的值时,函数将返回一个异常,表明特定数据类型发生了溢出。

在本文中,我们将了解 subtractExact() 函数在 Java 代码中的实现以及它如何返回值。我们将编写一段 Java 代码,输入两个长整型数字,并使用 Java 数学库提供的 subtractExact() 函数计算这两个数字的差值。

通过以下示例来理解这个问题。

输入

a=30 , b=10

输出

20

解释- 此处输入的数字是 30 和 10。我们需要使用 subtractExact() 函数计算这两个数字的差值,即 a-b。因此输出为 20,等于 a−b。

输入

a= -2 , b=-3

输出

1

解释 − 输入数字为 −2 和 −3。使用 subtractExact(a,b) 函数并将这两个数字作为参数传入函数,该函数将返回等于 a−b 的值,即 −2−(−3)=−2+3=1。因此,1 是所需的输出。

让我们了解 Java 代码中 subtractExact() 函数的用法,以查看该函数的实现。

让我们了解 Java 代码中 subtractExact() 函数的用法,以查看该函数的实现

我们将按照以下步骤在 Java 代码中实现 subtractExact() 函数:

  • 我们将使用 java.lang.Math 导入 Java 数学库。

  • 导入数学库后,我们可以使用库中的所有函数,包括 subtractExact() 函数。

  • 初始化两个 long 数据类型的变量。

  • 现在我们将创建另一个变量来存储函数返回的值。

  • 使用 subtractExact() 函数,我们将将值存储在变量中。该函数会从第一个参数中减去传入的第二个参数。

  • 打印函数的输出,该输出等于第一个参数与第二个参数之差。

示例

//查看 subtractExact() 函数实现的 Java 代码

import java.lang.Math; //导入 Java Math 库以使用 subtractExact() 函数

public class Main
{
	public static void main(String[] args) {
        //初始化两个 long 类型的变量
        long a;
        long b;
        
        //将值存储在变量中
        a=56240389;
        b=846270;
        
        long ans; //存储函数的输出
        //从第一个参数中减去第二个参数,即 a - b
        ans=Math.subtractExact(a,b); //将 a 和 b 作为参数传递给函数
        
        //打印输出
        System.out.println("函数返回值:"+ans);
        
        ans=Math.subtractExact(b,a); //等于 b - a
        
        System.out.println("函数返回值:"+ans);

	}
}

输出

函数返回值:55394119
函数返回值:-55394119

时间复杂度− O(1),因为函数 subtractExact() 在常数时间内返回输出。

空间复杂度− O(1),因为我们没有使用任何额外的空间来实现该函数。

查看 subtractExact() 函数溢出的 Java 代码

实现该函数的步骤如下:

  • 我们将使用 java.lang.Math 导入 Java 数学库

  • 现在创建两个 long 数据类型的变量。

  • 我们将在其中一个变量中存储 long 数据类型的最小值,在第二个变量中存储任意值一。

  • 现在初始化另一个长整型变量,用于存储函数的返回值。我们将长整型变量的最小值作为第一个参数传递,因为函数会从第一个参数中减去第二个参数。

  • 从长整型变量的最小值中减去该数值会导致长整型变量溢出。因此,函数会抛出长整型变量溢出的异常。

示例

//查看 subtractExact() 函数实现的 Java 代码

import java.lang.Math; //导入 Java Math 库以使用 subtractExact() 函数

public class Main
{
	public static void main(String[] args) {
        //初始化两个长整型变量
        long a;
        long b;
        
        //将值存储在变量中
        a=Long.MIN_VALUE;
        b=7;
        
        long ans; //存储函数的输出
        //从第一个参数中减去第二个参数,即 a-b
        //由于 a 是长整型的最小值,因此会导致 long 溢出
        ans=Math.subtractExact(a,b); //将 a 和 b 作为参数传递给函数
        
        //打印输出
        System.out.println("函数返回的值:"+ans);

	}
}

输出

由于函数发生溢出,代码将无法执行,从而出现如下的长溢出异常:

Exception in thread "main" java.lang.ArithmeticException: long overflow
        at java.base/java.lang.Math.subtractExact(Math.java:887)
        at Main.main(Main.java:19)

结论

本文讨论了 Java 数学 subtractExact(long x, long y) 方法及其在 Java 中的实现和功能。我们通过编写 Java 代码来理解 subtractExact() 函数的实现,并尝试理解函数中值的溢出。

希望您阅读本文后能够理解 Java 数学 subtractExact() 方法及其在 Java 中的实现。


相关文章