تفاوت parseIntparseFloat

تفاوت‌های کلیدی بین parseInt و parseFloat در جاوااسکریپت

در زبان برنامه‌نویسی جاوااسکریپت، دو تابع parseInt و parseFloat برای تبدیل مقادیر رشته‌ای به اعداد استفاده می‌شوند. اما این دو تابع تفاوت‌های مهمی در رفتار و خروجی دارند که هر توسعه‌دهنده‌ای باید با آن‌ها آشنا باشد.


نحوه عملکرد parseInt

تابع parseInt یک رشته را دریافت کرده و آن را به یک عدد صحیح (integer) تبدیل می‌کند. این تابع از چپ به راست رشته را بررسی می‌کند و تا زمانی که به کاراکترهای معتبر عددی برسد، ادامه می‌دهد.

  • اعداد اعشاری را به عدد صحیح گرد می‌کند (حذف بخش اعشاری)
  • از پایه عددی (radix) پشتیبانی می‌کند (مثلاً برای اعداد هگزادسیمال)
  • کاراکترهای غیرعددی را پس از بخش عددی نادیده می‌گیرد
مثال نتیجه
parseInt("123.45") 123
parseInt("10px") 10
parseInt("FF", 16) 255

نحوه عملکرد parseFloat

تابع parseFloat برخلاف parseInt، اعداد اعشاری را نیز حفظ می‌کند. این تابع مخصوص تبدیل رشته‌ها به اعداد ممیز شناور (floating-point) است.

  1. بخش اعشاری عدد را حفظ می‌کند
  2. فقط از نماد اعشار نقطه (.) پشتیبانی می‌کند
  3. پایه عددی (radix) را پشتیبانی نمی‌کند
  4. مانند parseInt کاراکترهای غیرعددی پس از عدد را نادیده می‌گیرد
مثال نتیجه
parseFloat("123.45") 123.45
parseFloat("10.5em") 10.5
parseFloat("3.14.15") 3.14

توجه: هر دو تابع parseInt و parseFloat اگر نتوانند عددی از رشته استخراج کنند، مقدار NaN (Not a Number) را برمی‌گردانند. برای مثال، parseInt("Hello") یا parseFloat("World") هر دو NaN برمی‌گردانند.

موارد استفاده و بهترین روش‌ها

انتخاب بین parseInt و parseFloat به نیاز برنامه بستگی دارد:

  • برای مقادیر صحیح مانند شماره‌گذاری یا شاخص‌ها از parseInt استفاده کنید
  • برای مقادیر اعشاری مانند محاسبات مالی یا علمی از parseFloat استفاده کنید
  • همیشه برای parseInt پایه عددی (radix) را مشخص کنید (معمولاً 10)
  • برای اطمینان از تبدیل صحیح، ابتدا رشته را با تابع trim() پاکسازی کنید

برای اطلاعات بیشتر درباره کار با اعداد در جاوااسکریپت می‌توانید از این لینک بازدید کنید.

نکته مهم: در نسخه‌های جدید جاوااسکریپت، روش‌های بهتری مانند عملگر + یا تابع Number() نیز برای تبدیل رشته به عدد وجود دارد که در برخی موارد می‌توانند جایگزین مناسبی برای parseInt/parseFloat باشند.