از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
بررسی کنید که آیا یک عدد در جاوا اسکریپت یک عدد شناور یا صحیح است
سرفصلهای مطلب
معرفی
برای مثال، اگر میخواهید ورودی کاربر را تأیید کنید، تشخیص روش تعیین نوع عدد در جاوا اسکریپت مشکلی است که ممکن است با آن مواجه شوید. در این بایت، ما می خواهیم بررسی کنیم که چگونه یک عدد یک عدد صحیح است یا یک عدد ممیز شناور.
انواع اعداد جاوا اسکریپت
ممکن است شما این را نمی دانستید، اما در جاوا اسکریپت، همه اعداد به عنوان اعداد ممیز شناور در نظر گرفته می شوند، صرف نظر از اینکه اعشار دارند یا نه. این به این دلیل است که جاوا اسکریپت از موارد زیر پیروی می کند IEEE 754 استاندارد برای حساب باینری ممیز شناور. اگر از زبانی می آیید که بین اعداد صحیح و اعداد ممیز شناور به صورت داخلی تمایز قائل می شود، ممکن است کمی گیج کننده به نظر برسد، اما این یکی از ویژگی های جاوا اسکریپت است که ما آن را می شناسیم و دوست داریم.
چرا عدد صحیح یا شناور را بررسی کنیم؟
دلایل زیادی وجود دارد که می خواهیم بدانیم آیا یک عدد یک عدد صحیح است یا ممیز شناور. یکی از احتمالات این است که ما در حال ساختن یک ویژگی هستیم که به ورودی عدد صحیح نیاز دارد. یا، یک مورد واضح تر، شما در حال تایید ورودی کاربر هستید و باید اطمینان حاصل کنید که نوع خاصی از شماره است. در این موارد، امکان بررسی نوع قوطی شماره مورد نیاز است.
چگونه بررسی کنیم که آیا یک عدد در جاوا اسکریپت یک عدد صحیح است یا خیر
برای بررسی اینکه آیا یک عدد در جاوا اسکریپت یک عدد صحیح است، می توانید از Number.isInteger()
تابع. در اینجا روش کار آن آمده است:
console.log(Number.isInteger(10)); // true
console.log(Number.isInteger(10.5)); // false
در این مثال ساده، ما اعداد 10 و 10.5 را آزمایش می کنیم تا ببینیم آیا آنها اعداد صحیح هستند یا خیر. همانطور که انتظار میرفت، Number.isInteger()
برمی گرداند true
برای 10 و false
برای 10.5.
را Number.isInteger()
تابع فقط برمی گردد true
اگر مقدار عددی باشد که جزء اعشاری ندارد. باز می گردد false
برای مقادیر غیر عددی
اما اگر بخواهیم بررسی کنیم که آیا یک عدد یک عدد صحیح در یک رشته است چه؟ خوب، میتوانیم رشته را با استفاده از یک عدد تجزیه کنیم parseFloat()
و سپس بررسی کنید که آیا عدد صحیح است:
let num = "10";
console.log(Number.isInteger(parseFloat(num))); // true
در این مورد، parseFloat()
رشته “10” را به عدد 10 تبدیل می کند و Number.isInteger()
به درستی آن را به عنوان یک عدد صحیح شناسایی می کند.
چگونه بررسی کنیم که آیا یک عدد در جاوا اسکریپت شناور است یا خیر
در جاوا اسکریپت، نوع خاصی برای شناورها وجود ندارد. هر دو اعداد صحیح و شناور به عنوان در نظر گرفته می شوند Number
نوع با این حال، ما هنوز هم می توانیم تعیین کنیم که آیا یک عدد شناور است یا خیر.
در اینجا یک تابع هوشمند وجود دارد که بررسی می کند آیا یک عدد شناور است یا خیر:
function isFloat(n) {
return Number(n) === n && n % 1 !== 0;
}
این تابع با بررسی اینکه آیا ورودی واقعا یک عدد است کار می کند (Number(n) === n
) و اینکه باقی مانده از تقسیم n
توسط 1
نیست 0
(n % 1 !== 0
). اگر باقیمانده نیست 0
، دلالت بر آن دارد n
دارای یک جزء کسری، بنابراین یک شناور است.
مثلا:
console.log(isFloat(10.5)); // Returns: true
console.log(isFloat(10)); // Returns: false
رسیدگی به موارد لبه
در حالی که عملکرد بالا برای اکثر موارد کار می کند، برخی از موارد لبه وجود دارد که باید در نظر بگیریم. به عنوان مثال، اگر رشته ای را ارسال کنیم که بتوان آن را به عدد تبدیل کرد، چه اتفاقی می افتد؟ یا اگر یک آرایه را پاس کنیم چه می شود؟
بیایید عملکرد خود را برای رسیدگی به این موارد لبه بهبود دهیم:
function isFloat(n) {
if (typeof n !== 'number') {
return false;
}
return Number(n) === n && n % 1 !== 0;
}
اکنون، تابع ما ابتدا بررسی می کند که آیا ورودی از نوع عددی است یا خیر. اگر نه، بلافاصله برمی گردد false
. به این ترتیب می توانیم از نتایج نادرست ورودی های نامعتبر جلوگیری کنیم.
مثلا:
console.log(isFloat("10.5")); // Returns: false
console.log(isFloat((10.5))); // Returns: false
دقت و محدودیت ها
به دلیل استاندارد IEEE 754، جاوا اسکریپت تنها می تواند به طور ایمن اعداد بین -(2 را نشان دهد53 – 1) و 253 – 1. هر عددی خارج از این محدوده ممکن است دقت خود را از دست بدهد.
علاوه بر این، به دلیل نمایش ممیز شناور باینری، برخی از اعداد اعشاری نمی توانند دقیقاً نمایش داده شوند. این می تواند به نتایج غیرمنتظره ای در هنگام مقایسه اعداد یا بررسی شناور بودن یک عدد منجر شود.
ممکن است این مثال عجیب و غریب را دیده باشید که در سراسر وب شناور است:
console.log(0.1 + 0.2 === 0.3); // Returns: false
ما گرفتیم false
به خاطر همین:
console.log(0.1 + 0.2); // Returns: 0.30000000000000004
بنابراین، هنگام کار با شناورها در جاوا اسکریپت، همیشه باید از این محدودیت ها آگاه باشید و آنها را به طور مناسب در کد خود مدیریت کنید.
نتیجه
در این بایت، ما یاد گرفتیم که چگونه بررسی کنیم که آیا یک عدد در جاوا اسکریپت شناور است یا خیر. ما همچنین روش رسیدگی به موارد لبه را دیده ایم و در مورد محدودیت های دقت اعداد در جاوا اسکریپت صحبت کرده ایم. در حالی که جاوا اسکریپت نوع شناور خاصی ندارد، ما همچنان می توانیم با بررسی باقیمانده تقسیم آن بر 1، تعیین کنیم که آیا یک عدد شناور است یا خیر.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1402-12-28 18:38:03