المسارات
/
Elixir
Elixir
/
المنهج
/
أعداد الفاصلة العائمة
أع

أعداد الفاصلة العائمة في Elixir

8 تمارين

نبذة عن أعداد الفاصلة العائمة

هناك نوعان مختلفان من الأعداد في Elixir: الأعداد الصحيحة والأعداد العشرية.

الأعداد العشرية هي أعداد فيها رقم واحد أو أكثر بعد الفاصلة العشرية. وهي تستخدم صيغة الأعداد العشرية مزدوجة الدقة ذات 64 بت.

float = 3.45
# => 3.45

تدعم Elixir أيضًا الصيغة العلمية للأعداد العشرية.

1.25e-2
# => 0.0125

أخطاء التقريب

الأعداد العشرية سيئة الصيت بسبب أخطاء التقريب فيها.

0.1 + 0.2
# => 0.30000000000000004

لكن هذه الأنواع من الأخطاء ليست خاصة بـ Elixir. فهي تحدث في كل لغات البرمجة. والسبب أن كل البيانات على حواسيبنا تُخزَّن وتُعالَج ككود ثنائي. ففي النظام الثنائي، لا يمكن التعبير بدقة إلا عن الكسور التي يمكن كتابة مقامها على الصورة 2^n (مثل 1/4 و3/8 و5/16). أما الكسور الأخرى فتُعبَّر عنها بتقديرات.

# 3/4
Float.ratio(0.75)
# => {3, 4}

# 3/5
Float.ratio(0.6)
# => {5404319552844595, 9007199254740992}

يمكنك أن تتعلّم المزيد عن هذه المشكلة على 0.30000000000000004.com. وتقدّم صفحة Float Toy شرحًا بيانيًا جميلًا لكيفية تحويل بتات عدد عشري إلى قيمة عشرية فعلية.

المقارنة

يمكن اعتبار الأعداد الصحيحة والأعداد العشرية متساوية (==) إذا كانت لها القيمة نفسها. لكنها، لاختلاف نوعها، لا تكون متساوية تمامًا (===) أبدًا.

1 == 1.0
# => true

1 === 1.0
# => false

التحويل

يمكن خلط الأعداد الصحيحة والأعداد العشرية معًا في تعبير حسابي واحد. واستخدام عدد عشري في التعبير يضمن أن تكون النتيجة عددًا عشريًا أيضًا.

2 * 3
# => 6

2 * 3.0
# => 6.0

يمكن تقريب الأعداد العشرية (round)، أو تقريبها لأعلى (ceil)، أو تقريبها لأسفل (floor).

لتقريب عدد عشري إلى عدد عشري، استخدم دوالّ من وحدة Float (Float.round، وFloat.ceil، وFloat.floor). وللحصول على عدد صحيح بدلًا من ذلك، استخدم دوالّ من وحدة Kernel (round، وceil، وfloor).

وثمة أسلوب آخر لتحويل عدد عشري إلى عدد صحيح، وهو قطع جزئه العشري باستخدام trunc.

Float.ceil(5.2)
# => 6.0

ceil(5.2)
# => 6

trunc(5.2)
# => 5
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم أعداد الفاصلة العائمة

التدريب مقفل

افتح 4 تمارين إضافية لممارسة أعداد الفاصلة العائمة