سلام دوست عزیز
هنگام casting امکان داره مقداری از داده از بین بره اگر float رو بریزیم داخل int قسمت اعشار عدد از بین خواهد رفت بنابرین این منطقی ترین کاری هستش که یه کامپایلر میتونه انجام بده.
فجایع بسیار بزرگی در شرکت ها، بانک ها و کمپانیهای بزرگ به دلیل از دست رفتن داده روی داده و از دست رفتن داده و اطلاعات بسیار خطرناکه.
این warning به شما اعلام می کنه دوست عزیز حواست جمع باشه داری داده هاتو از دست میدی. الان کامپایلرهای پیشرفته برای اینکه شما بخواهید نوع رو تغییر بدید از شما امضا می گیرن و می گن دوست عزیز اول امضا به من بده، بعد من مقدار مورد نظرتو درون متغیر قرار میدم.
برای مثال در سی شارپ اینرو ارور می گیره:
float a = 2.365;
int b;
b = a;
و میگه اول امضا بده که خودت می خوای این کار رو انجام بدی بعد من مقدار a رو در b قرار میدم.
و ما هم به این شکل امضا میدیم:
b = (int)a;