وجدت هذا الشرح
لكن مافهمته أنه يعتبر القيمة double ولكي نخبر الكمبيوتر أنها float يجب أن نضع f.
لكن مازال السؤال قائما لماذا نستعمل ذلك مع أننا حددنا مسبقا أنه من النوع float عند تعريف المتغير وليس من النوع double ؟
وجدت هذا الشرح
لكن مافهمته أنه يعتبر القيمة double ولكي نخبر الكمبيوتر أنها float يجب أن نضع f.
لكن مازال السؤال قائما لماذا نستعمل ذلك مع أننا حددنا مسبقا أنه من النوع float عند تعريف المتغير وليس من النوع double ؟
اقرب سبب لوضع "f" بعد الرقم لمتغير من نوع float هو عملية الكاستنج Casting. حيث تتولى الجافا تحوير Rounding الرقم إلى صيغة float لأنه يعامل بشكل افتراضي كـ double عندما تتواجد الفاصلة العشرية. فمثلا رقم "1.23222223333333" سيتم تحويره إلى "1.2322222". حيث ان float تستوعب ٧ ارقام بعد الفاصلة العشرية.
يمكنك ملاحظة ان :
float number = 1.23f;
تكافئ عمليا :
float number = (float) 1.23;
حيث تعامل 1.23 افتراضيا كـ double وعن طريق الكاستنج انت تتولى تحويلها إلى float. اعرف ان هذا مربك بعض الشئ ولكن هكذا هو تصميم لغة الجافا ويجب ان تحترم قوانينها :)
إذا هو أمر في تصميم اللغة، لكنني أرى أن تصميمها بهذه الطريقة غير منطقي فطالما أنا قمت بتحديد النوع لماذا يتعين علي أن أقوم بتحويله مرة أخرى.
سؤال آخر من فضلك: هل إذا لم أضع حرف L بعد القيم داخل متغير من النوع Long سيتم اعتبارها Integer؟
بالمناسبة منذ فترة لاحظت أن المدونة لا تعمل، هل قررت إزالتها أم أن هناك مشكلة تقنية ؟
غير منطقي فطالما أنا قمت بتحديد النوع لماذا يتعين علي أن أقوم بتحويله مرة أخرى.
بالعكس، أرى أن هذا مرن جدًّا، لأنك في الواقع أنت لم تقم بتحديد نوع 1.23 بل قمت بتحديد نوع number
وبهذا يمكنك أن ترفق ما تشاء إلى ما تشاء.
سؤال آخر من فضلك: هل إذا لم أضع حرف L بعد القيم داخل متغير من النوع Long سيتم اعتبارها Integer؟
أجل والعديد من لغات البرمجة (ذات المستوى الأعلى) تستخدم نفس الصيغة النحوية (#C له نفس الصيغة كذلك)
كل على يقين أن مطوّري هذه الصيغ خبراء وقاموا بذلك بناء على دراسات.
التعليقات