subtractExact()
اینجا با «تفریق دقیق (Exact Subtraction)» و تابع subtractExact() آشنا می شویم. تابع subtractExact جاوا دو عدد صحیح را کم می کند. اگر نتیجه از محدوده بیرون برود، خطا می دهد. این کار جلوی جواب اشتباه را می گیرد.
کاربرد تابع subtractExact جاوا
این تابع تفریق را انجام می دهد. نوع ها می تواند int یا long باشد. اگر «سرریز (Overflow)» رخ دهد، یک ArithmeticException پرتاب می شود. این یعنی محاسبه امن تر است.
public class Main {
public static void main(String[] args) {
System.out.println(Math.subtractExact(12, 16));
System.out.println(Math.subtractExact(24060, 10000));
}
}
اگر سرریز شود چه می شود؟
طبق منبع، در سرریز، استثنای ArithmeticException رخ می دهد. می توانی با try/catch آن را مدیریت کنی و پیام مناسب بدهی.
public class Main {
public static void main(String[] args) {
try {
int a = Integer.MIN_VALUE;
int b = 1;
int c = Math.subtractExact(a, b);
System.out.println(c);
} catch (ArithmeticException ex) {
System.out.println("Overflow detected");
}
}
}
نکته: وقتی به اعداد مرزی نزدیک می شوی، از متدهای «Exact» استفاده کن. برای جمع دقیق به addExact() برو. برای ضرب دقیق هم multiplyExact() را ببین. همین صفحه را با عنوان تابع subtractExact جاوا نگه دار.
جمع بندی سریع
- تفریق امن برای int و long.
- در سرریز، ArithmeticException پرتاب می شود.
- برای اعداد مرزی عالی است.
- جایگزین تفریق ساده و بی خطرتر است.