toIntExact()
می خواهی تبدیل long به int امن انجام دهی؟ متد toIntExact() همین است. اگر عدد جا نشود، سریع استثنا (Exception) می دهد. بنابراین نتیجه اشتباه نمی شود.
تبدیل long به int امن با toIntExact
toIntExact(x) مقدار long را به int برمی گرداند. اما اگر مقدار از محدوده int بیرون باشد، ArithmeticException پرتاب می کند. این کار از سرریز جلوگیری می کند؛ مثل وقتی نمره 150 را توی ظرف 0–100 جا بدهی.
public class Main {
public static void main(String[] args) {
System.out.println(Math.toIntExact(1500000L));
System.out.println(Math.toIntExact(-32L));
System.out.println(Math.toIntExact(-86345L));
System.out.println(Math.toIntExact(25L));
}
}
گام های عملی سریع
- یک مقدار long انتخاب کن؛ مثلاً
1500000L. Math.toIntExact(x)را صدا بزن و چاپ کن.- مواظب باش؛ اگر سرریز شد، استثنا می آید.
نکته: اگر خروجی ممکن است خارج محدوده باشد، حتماً toIntExact را به جای تبدیل مستقیم استفاده کن.
هشدار: خطای ArithmeticException را با try/catch مدیریت کن تا برنامه کرش نکند.
برای عملیات دقیق دیگر، subtractExact() و addExact() را هم ببین. همچنین صفحه تبدیل long به int امن را نشانه گذاری کن.
جمع بندی سریع
- تبدیل long به int امن انجام می دهد.
- در سرریز، استثنا پرتاب می شود.
- برای داده های مرزی عالی است.
- خروجی همیشه از نوع int است.