عند تحويل القيم من نوع float
إلى int
في جافا، قد تواجه مشكلة في فقدان البيانات بسبب تقليص القيم العشرية. في الشفرة التي قمت بكتابتها، حاولت تعيين قيمة عشرية (5.6
) إلى متغير من نوع int
(i
). ولكن، بما أن النوع int
يتوقع قيمة صحيحة، فإن الجافا سترفض هذا التحويل المباشر.
لحل هذه المشكلة، يمكنك استخدام الدالة Math.round()
لتقريب القيمة العشرية إلى أقرب قيمة صحيحة، ثم تحويلها إلى int
. هناك طريقتين للقيام بذلك:
- استخدام
Math.round()
مع تحويل إلىint
:
javaint i = (int) Math.round(5.6);
System.out.println(i); // ستطبع: 6
- استخدام
Math.floor()
أوMath.ceil()
لتقريب القيمة ومن ثم تحويلها إلىint
:
javaint i = (int) Math.floor(5.6); // أو Math.ceil()
System.out.println(i); // ستطبع: 5
الفرق بين Math.floor()
و Math.ceil()
هو أن Math.floor()
تقرب القيمة لأقرب عدد صحيح أصغر، بينما Math.ceil()
تقربها لأقرب عدد صحيح أكبر.
باختصار، عند تحويل قيمة float
إلى int
، يجب استخدام إحدى الدوال المذكورة أعلاه لتحويل القيمة العشرية إلى صحيحة قبل تخزينها في متغير من نوع int
.
المزيد من المعلومات
عندما تقوم بتحويل قيمة من نوع float
إلى int
في جافا، يتم تقريب القيمة العشرية إما لأقرب عدد صحيح أكبر أو لأقرب عدد صحيح أصغر باعتماد على القيمة العشرية.
- إذا كانت القيمة العشرية مثل
5.6
، فسيتم تقريبها لأقرب عدد صحيح أكبر، مما يعني أنها ستصبح6
بعد التحويل. - إذا كانت القيمة العشرية مثل
5.2
، فسيتم تقريبها لأقرب عدد صحيح أصغر، مما يعني أنها ستصبح5
بعد التحويل.
عند استخدام Math.round()
، يتم تقريب القيمة العشرية إلى أقرب عدد صحيح. إذا كانت القيمة العشرية على النصف (مثل 5.5
)، فسيتم تقريبها لأقرب عدد صحيح زوجي (مثل 6
).
بشكل عام، يجب أن تكون متيقنًا من تحويل القيم العشرية إلى صحيحة بشكل صحيح وملائم لاحتياجات التطبيق الخاص بك.