# Java Math subtractExact()

The Java Math subtractExact() method subtracts the specified numbers and returns it.

The syntax of the `subtractExact()` method is:

``Math.subtractExact(num1, num2)``

Here, `subtractExact()` is a static method. Hence, we are accessing the method using the class name, `Math`.

## subtractExact() Parameters

The `subtractExact()` method takes two parameters.

• num1 - value from which num2 is subtracted
• num2 - value which is subtracted from num1

Note: The data type of both values should be either `int` or `long`.

## subtractExact() Return Value

• returns the difference between num1 and num2

## Example 1: Java Math.subtractExact()

``````import java.lang.Math;

class Main {
public static void main(String[] args) {

// create int variable
int a = 54;
int b = 30;

// subtractExact() with int arguments
System.out.println(Math.subtractExact(a, b));  // 24

// create long variable
long c = 72345678l;
long d = 17654321l;

// subtractExact() with long arguments
System.out.println(Math.subtractExact(c, d));  // 54691357
}
}``````

In the above example, we have used the `Math.subtractExact()` method with the `int` and `long` variables to calculate the difference.

## Example 2: Math.subtractExact() Throws Exception

The method `subtractExact()` throws an exception if the result of the difference overflows the data type. That is, the result should be within the range of the data type of specified variables.

``````import java.lang.Math;

class Main {
public static void main(String[] args) {

// create int variable
// maximum int value
int a = 2147483647;
int b = -1;

// subtractExact() with int arguments
// throws exception
System.out.println(Math.subtractExact(a, b));
}
}``````

In the above example, the value of a is the maximum `int` value and the value of b is -1. When we subtract a and b,

``````  2147483647 - (-1)
=> 2147483647 + 1
=> 2147483648      // out of range of int type``````

Hence, the `subtractExact()` method throws the `integer overflow` exception.