logo

تعويم مقابل جافا مزدوجة

في جافا، جافا.

هناك نوعان من أنواع بيانات النقطة العائمة:

  • تعويم نوع البيانات
  • نوع بيانات مزدوج

يمثل كل من float وdouble أرقام الفاصلة العائمة التي تخزن القيم العشرية.

نوع بيانات النقطة العائمة قيم الحجم (بت)* متطلبات التخزين (بايت) القيمة الافتراضية دقة أرقام عشرية يتراوح دقة
يطفو IEEE 754 النقطة العائمة 32 4 0.0f أعزب 6 أرقام عشرية 3.4e-038 إلى 3.4e+038 قليل
مزدوج IEEE 754 النقطة العائمة 64 8 0.0 د مزدوج 15 رقمًا عشريًا 1.7e-308 إلى 1.7e+308 عالي

*تشمل بتات الحجم ما يلي:

أجزاء يطفو مزدوج
لافتة 1 1
الأس 8 أحد عشر
الجزء العشري 23 52

الدقة واحد: إنها تتكون من واحد بت الإشارة (S)، ثمانية بتات الأس (E)، و ثلاثة وعشرين بتات العشري (م).

دقة مزدوجة: إنها تتكون من واحد بت الإشارة (S)، أحد عشر بتات الأس (E)، و اثنان وخمسون بتات العشري (م).

تعويم مقابل جافا مزدوجة

تعويم نوع البيانات

إنه رقم فاصلة عائمة 32 بت ودقة واحدة IEEE 754 (قياسي لحساب النقطة العائمة). وهذا يعني أنه يعطي دقة 6-7 أرقام عشرية. يتم استخدامه إذا أردنا استخدام الذاكرة بشكل فعال لأنها تستهلك ذاكرة أقل مقارنة بنوع البيانات المزدوج. لتحديد قيمة عائمة، يجب علينا استخدام اللاحقة f أو F. قيمتها الافتراضية هي 0.0f. بشكل افتراضي، يتم التعامل مع الأرقام العائمة على أنها مزدوجة في Java.

على سبيل المثال، إذا قمنا بتعريف رقم عائم على النحو التالي:

 float height = 167.7 

الإعلان أعلاه عن المتغير العائم يعطي خطأ في الترجمة. يمكننا تصحيح الخطأ بإضافة لاحقة f أو F.

 float height = 167.7f or float height = 167.7F 

نوع بيانات مزدوج

نوع البيانات المزدوج هو رقم فاصلة عائمة IEEE 754 مزدوج الدقة 64 بت. وهذا يعني أنه يعطي دقة 15-16 رقمًا عشريًا. يستهلك ذاكرة أكبر مقارنة بنوع البيانات العائمة. يتم استخدامه لتخزين القيم العشرية. قيمته الافتراضية هي 0.0d. من الاختياري إضافة اللاحقة d أو D. على سبيل المثال:

 double price = 987.90D or double price = 987.90d or double price = 987.90 

تعويم مقابل نوع البيانات المزدوج

نوع البيانات المزدوج أكثر دقة من نوع البيانات العائمة. يلخص الجدول التالي الاختلافات بين أنواع البيانات العائمة والمزدوجة.

أساس تعويم نوع البيانات نوع بيانات مزدوج
ذاكرة التي تحتلها 4 بايت. التي تحتلها 8 بايت.
دقة دقتها هي قليل . دقتها هي عالي .
دقة يتبع الدقة واحد (6-7 أرقام عشرية). يتبع دقة مزدوجة (15-16 رقمًا عشريًا).
الكلمة الرئيسية المستخدمة ال يطفو يتم استخدام الكلمة الأساسية لتحديد رقم عائم. ال مزدوج يتم استخدام الكلمة الأساسية لتحديد رقم مزدوج الدقة.
فئة المجمع فئة المجمع الخاصة به هي java.lang.Float. فئة المجمع الخاصة به هي java.lang.Double.
نوع البيانات الافتراضي لا تستخدمه Java كرقم الفاصلة العائمة الافتراضي. انها تقصير نوع البيانات لأرقام الفاصلة العائمة.
فقدان البيانات سيكون هنالك لا فقدان البيانات إذا قمنا بتحويل تعويم إلى مضاعفة. سيكون هنالك فقدان البيانات إذا قمنا بتحويل الضعف إلى تعويم.
الاستخدامات ينبغي أن تستخدم حيث دقة أقل مطلوب والتخزين هو القيد. يتم استخدامه حيث مزيد من الدقة مطلوب ويتطلب أيضًا المزيد من الدقة.
لاحقة يستخدم F أو F كلاحقة. من الضروري إضافة لاحقة إذا كنت تعلن عن متغير عائم. يستخدم د أو د كلاحقة. من الاختياري إضافة لاحقة إذا كنت تعلن عن متغير مزدوج.
التمثيل 28.96f أو 28.96F 12.5 أو 12.5D أو 12.5d

أوجه التشابه بين نوع البيانات العائمة والمزدوجة

  • يمكن تمثيل الأرقام الحقيقية بكلا نوعي البيانات.
  • كلا النوعين من البيانات العائمة والمزدوجة ليسا دقيقين، وبالتالي فهي ذات قيمة تقريبية.

ما نوع البيانات ذات الفاصلة العائمة في Java التي يجب أن نستخدمها؟

المزدوج أكثر دقة من التعويم. لذلك، إذا كانت هناك حاجة إلى نتيجة أكثر دقة ودقة، استخدم ضعفًا. سبب آخر لاستخدام double هو أنه إذا كان الرقم لا يتناسب مع النطاق الذي يقدمه التعويم، فاستخدم double. يجب أن نستخدم التعويم إذا كان لدينا قيود على الذاكرة لأنها تشغل نصف المساحة بدلاً من الضعف.

ننصحك باستخدام double over float إذا لم يكن هناك قيود على الذاكرة والمساحة وعند الحاجة إلى مزيد من الدقة. من المستحسن استخدام التعويم، إذا كانت الذاكرة مثيرة للقلق، والنتيجة هي 16 رقمًا عشريًا دقيقًا غير مطلوب.

np.mean

التاليين برامج جافا تظهر بوضوح الاختلافات بين نوع البيانات العائمة والمزدوجة.

FloatDataTypeExample.java

 public class FloatDataTypeExample { public static void main(String args[]) { float x = 1.0f, y = 3.0f; //defining x and y as float float z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

انتاج:

 x/y = 0.33333334 

DoubleDataTypeExample.java

 public class DoubleDataTypeExample { public static void main(String args[]) { double x = 1.0, y = 3.0; //defining x and y as double double z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

انتاج:

 x/y = 0.3333333333333333 

من خلال المثالين أعلاه، يتضح أن نوع البيانات المزدوج يحتاج إلى ذاكرة أكبر لتخزين رقم مزدوج الدقة ويعطي أيضًا نتيجة أكثر دقة تصل إلى 16 رقمًا عشريًا. بينما يأخذ نوع البيانات العائمة مساحة أقل لتخزين أرقام أحادية الدقة ويعطي نتائج تصل إلى 6 منازل عشرية.