این متد که در نسخه ES6 جاوااسکریپت معرفی شده که با حذف قسمت اعشاری، بخش صحیح یک عدد را برمیگرداند. برخلاف روشهای گرد کردن که عدد را به بالا یا پایین تغییر میدهند، ()Math.trunc فقط اعشار را حذف کرده و عدد صحیح را بدون هیچ تغییری برمی گرداند، مثال:
console.log(Math.trunc(13.37)); // Expected output: 13 console.log(Math.trunc(42.84)); // Expected output: 42 console.log(Math.trunc(0.123)); // Expected output: 0 console.log(Math.trunc(-0.123)); // Expected output: -0
Math.trunc(x)
X: عددی که باید پردازش شود.
بخش صحیح عدد X.
برخلاف سه متد دیگر در Math یعنی Math.floor() ، Math.ceil و ()Math.round، متد ()Math.trunc بسیار ساده عمل میکند. این متد، نقطه و ارقام سمت راست آن را حذف میکند، بدون توجه به اینکه عدد مثبت یا منفی باشد. از آنجایی که trunc یک متد ایستا (static) در Math است، همیشه به صورت ()Math.trunc استفاده میشود و نیازی به ساختن یک شیء جدید از Math نیست (چرا که Math یک constructor نیست).
استفاده از ()Math.trunc
Math.trunc(-Infinity); // -Infinity Math.trunc("-1.123"); // -1 Math.trunc(-0.123); // -0 Math.trunc(-0); // -0 Math.trunc(0); // 0 Math.trunc(0.123); // 0 Math.trunc(13.37); // 13 Math.trunc(42.84); // 42 Math.trunc(Infinity); // Infinity
در جاوااسکریپت، میتوان از عملگرهای بیتوایز برای حذف قسمت اعشاری عدد استفاده کرد. این روشها بهطور خودکار عدد را به مقدار صحیح آن تبدیل میکنند، مشابه عملکرد ()Math.trunc . به عنوان مثال:
console.log(13.37 | 0); // 13 console.log(42.84 | 0); // 42 console.log(-0.123 | 0); // 0 console.log(-13.37 | 0); // -13
عملیات بیتوایز عملگرهای خود را به اعداد صحیح 32 بیتی تبدیل میکنند و در طول تاریخ، برنامهنویسان از این ویژگی برای کوتاه کردن اعداد اعشاری استفاده کردهاند. تکنیکهای رایج عبارتند از:
const original = 3.14; const truncated1 = ~~original; // Double negation const truncated2 = original & -1; // Bitwise AND with -1 const truncated3 = original | 0; // Bitwise OR with 0 const truncated4 = original ^ 0; // Bitwise XOR with 0 const truncated5 = original >> 0; // Bitwise shifting by 0
توجه داشته باشید: این عمل در واقع به toInt32 شبیه است که با Math.trunc متفاوت است. اگر مقداری که میخواهیم تبدیل کنیم بین اعداد −2147483649 تا 2147483648 نباشد، عمل تبدیل با خطای سرریز (Overflow Error) مواجه میشود.
const a = ~~2147483648; // -2147483648 const b = ~~-2147483649; // 2147483647 const c = ~~4294967296; // 0
تنها زمانی از ~~ به عنوان جایگزینی برای Math.trunc() استفاده کنید که مطمئن باشید ورودیها در محدوده اعداد صحیح 32 بیتی قرار دارند.
در این مقاله با `متد Math.trunc در جاوااسکریپت` آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.
منبع: وبسایت میموک