在JavaScript中,有一種很常見的方法叫做Math.floor。這個方法可以完成向下取整的功能。Math.floor方法將原數字向下取整為最接近的整數:
Math.floor(1.1); // 1 Math.floor(-1.1); // -2
一、Math.floor的基本用法
首先,我們來看一下Math.floor方法的使用:
const num1 = 12.67; const num2 = 5.33; console.log(Math.floor(num1)); // 12 console.log(Math.floor(num2)); // 5
可以發現,Math.floor方法可以將小數部分捨去,只保留整數部分。如果原數字為負數,則Math.floor方法將其向下取整為比原數小的最大整數。
說白了,Math.floor就是去掉數字的小數部分,只保留整數。
二、Math.floor方法的妙用
1、用Math.floor實現整數除法
在JavaScript中進行除法運算時,如果除不盡,會得到一個小數。但是,在某些情況下,我們需要得到一個整數結果。此時,我們就可以使用Math.floor方法將小數部分去掉,得到一個整數結果。
const num1 = 10; const num2 = 3; const result = Math.floor(num1 / num2); console.log(result); // 3
在上面的例子中,我們用Math.floor實現了整數除法。num1除以num2的結果是3.3333333,但是我們使用了Math.floor方法將小數部分捨去,只保留整數3。
2、用Math.floor獲取隨機整數
在開發中,我們有時需要生成隨機整數。使用Math.random方法可以得到一個0到1之間的隨機數,但是這個隨機數是小數,我們需要將其轉換成整數才能使用。此時,我們就可以使用Math.floor方法獲取一個隨機整數。
const randomNumber = Math.floor(Math.random() * 10); console.log(randomNumber);
在上面的代碼中,Math.random() * 10得到的是一個0到10之間的小數,我們再使用Math.floor方法將其轉換為一個0到9之間的整數。
3、用Math.floor實現精準的小數位數控制
在JavaScript中,默認情況下,使用toFixed方法可以實現小數位數控制。但是,這個方法會四捨五入,如果我們需要實現精確的小數位數控制,可以使用Math.floor方法以及乘法運算和除法運算。
function formatNumber(num, decimals) { return Math.floor(num * Math.pow(10, decimals)) / Math.pow(10, decimals); } console.log(formatNumber(3.1415926535, 2)); // 3.14
在上面的代碼中,我們編寫了一個formatNumber函數,該函數接收兩個參數:num表示要格式化的數字,decimals表示小數位數。
我們使用乘法運算將num乘以10的decimals次方,使小數點移到要保留的精度前面,然後使用Math.floor方法將小數點後面的部分去掉,最後再使用除法將小數點移到原來的位置上,以實現精確的小數位數控制。
三、Math.floor方法的常見誤區
1、Math.floor方法只接收一個參數
有些初學者會誤認為Math.floor方法可以接收多個參數,比如下面的代碼:
const num1 = 12; const num2 = 10; const num3 = 8; console.log(Math.floor(num1, num2, num3)); // 12
然而,上面的代碼是錯誤的,因為Math.floor方法只能接收一個參數,如果傳入多個參數,只會使用第一個參數進行運算。
2、Math.floor方法不能用於字元串
與其他編程語言不同的是,在JavaScript中,Math.floor方法只能用於數字,不能用於字元串:
console.log(Math.floor('12.67')); // NaN console.log(Math.floor('hello')); // NaN
如果我們傳入的參數不是數字類型,Math.floor方法將返回NaN(Not a Number)。
四、總結
Math.floor方法是一個非常實用的方法,它可以用於數學計算、隨機數生成、小數位數控制等多個方面。但是,在使用Math.floor方法時,我們需要注意它的限制,確保傳入的參數是數字類型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297622.html