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。函数返回的值是长整型的差值,即a – b。当函数返回的值溢出传递参数的数据类型的值时,函数将返回一个显示特定数据类型中溢出的异常。
在本文中,我们将看到Java代码中subtractExact()函数的实现以及它如何返回值。我们将编写一个Java代码,其中两个数字将作为输入,输入将是长整型,并且我们需要使用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);
}
}
输出
代码将不会执行,因为函数中的溢出导致出现长整型溢出异常,如下所示:
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中的实现。