تفاوت 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) است.
- بخش اعشاری عدد را حفظ میکند
- فقط از نماد اعشار نقطه (.) پشتیبانی میکند
- پایه عددی (radix) را پشتیبانی نمیکند
- مانند 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 باشند.