Java Math subtractExact(long x, long y) 方法


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

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

subtractExact() 函数的语法

long a;
long b;

long subtractExact(long a, long b);

传递给函数的参数是 a 和 b,它们都是 long 数据类型。该函数返回 long 类型的值,该值等于传递给函数的参数的差值,即 a-b。当函数返回的值超过传递参数的数据类型的取值范围时,该函数将返回一个异常,指示特定数据类型发生溢出。

在这篇文章中,我们将看到 subtractExact() 函数在 Java 代码中的实现以及它如何返回值。我们将编写一段 Java 代码,其中两个数字将作为输入给出,输入将为 long 数据类型,我们需要使用 Java Math 库中提供的 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 Math 库。

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

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

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

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

  • 打印函数的输出,该输出将等于第一个参数和第二个参数的差值。

示例

//Java Code to see the implementation of the subtractExact() function

import java.lang.Math; //to import the java Math library to use the subtractExact() function

public class Main
{
	public static void main(String[] args) {
		//initialise two variable of long data type
		long a;
		long b;
		
		//store the values in the variable
		a=56240389;
		b=846270;
		
		long ans; //to store the  output of the function
		//subtracts the second parameter from the first one i.e. a-b
		ans=Math.subtractExact(a,b); // passing a and b as parameter in the function
		
		//print the output
		System.out.println("The value returned by the function : "+ans);
		
		ans=Math.subtractExact(b,a); //will equal to b-a
		
		System.out.println("The value returned by the function : "+ans);

	}
}

输出

The value returned by the function : 55394119
The value returned by the function : -55394119

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

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

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

实现该函数的步骤如下

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

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

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

  • 现在初始化另一个 long 数据类型的变量来存储函数返回的值。我们将 long 数据类型的最小值作为第一个参数传递,因为该函数从第一个参数中减去传递给函数的第二个参数。

  • 从 long 数据类型的最小值中减去数字将导致 long 数据类型发生溢出。因此,该函数将显示 long 溢出的异常。

示例

//Java Code to see the implementation of the subtractExact() function

import java.lang.Math; //to import the java Math library to use the subtractExact() function

public class Main
{
	public static void main(String[] args) {
		//initialise two variable of long data type
		long a;
		long b;
		
		//store the values in the variable
		a=Long.MIN_VALUE;
		b=7;
		
		long ans; //to store the  output of the function
		//subtracts the second parameter from the first one i.e. a-b
		//which will cause overflow in long as a is the minimum value of long data type
		ans=Math.subtractExact(a,b); // passing a and b as parameter in the function
		
		//print the output
		System.out.println("The value returned by the function : "+ans);
		

	}
}

输出

由于函数中发生溢出,代码将无法执行,从而显示如下所示的 long 溢出异常

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 Math subtractExact(long x, long y) 方法以及该函数在 Java 中的实现及其功能。我们通过编写 Java 代码来了解 subtractExact() 函数的实现,并尝试了解函数中值的溢出。

我希望您在阅读本文后已经了解了 Java Math subtractExact() 方法及其在 Java 中的实现。

更新于:2023年8月28日

浏览量:276

启动您的职业生涯

通过完成课程获得认证

开始学习
广告