مسیر
/
Elixir
Elixir
/
برنامه‌ی درسی
/
اعداد ممیز شناور
اع

اعداد ممیز شناور در Elixir

8 تمرین

درباره‌ی اعداد ممیز شناور

در Elixir دو نوع متفاوت عدد وجود دارد: عدد صحیح و عدد اعشاری.

عدد اعشاری عددی است که یک یا چند رقم بعد از جداکننده‌ی اعشار دارد. این نوع عدد از قالب ممیز شناور با دقت مضاعف ۶۴ بیتی استفاده می‌کند.

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 تمرین دیگر را باز کنید