Javascript取整函數(shù)及向零取整幾種常用的方法
向零取整方式
在JavaScript中,有多種方式可以對數(shù)字進(jìn)行取整操作,即去掉小數(shù)部分,只保留整數(shù)部分。其中,向0取整(也稱為截?cái)嘈?shù)部分)的方式有以下幾種常用的方法:
使用
Math.trunc():Math.trunc()方法會(huì)去掉一個(gè)數(shù)字的小數(shù)部分,返回其整數(shù)部分,但不進(jìn)行四舍五入。let num = 4.9; let truncated = Math.trunc(num); // 4 console.log(truncated);
使用按位運(yùn)算符
|(按位或):
按位運(yùn)算符|在處理數(shù)字時(shí),會(huì)將操作數(shù)轉(zhuǎn)換為32位整數(shù),從而截?cái)嘈?shù)部分。let num = 4.9; let truncated = num | 0; // 4 console.log(truncated);
使用雙波浪號(hào)
~~:
雙波浪號(hào)~~也是一種按位取整的方式,效果與|類似,會(huì)截?cái)嘈?shù)部分。綜上所述,最推薦的方法是使用let num = 4.9; let truncated = ~~num; // 4 console.log(truncated);
Math.trunc(),因?yàn)樗Z義明確,代碼易讀,且性能較好。其他方法雖然也能實(shí)現(xiàn)向0取整的效果,但在可讀性和維護(hù)性上可能稍遜一籌。使用
Math.floor()和Math.ceil()的組合(僅當(dāng)數(shù)字為正數(shù)時(shí)):
雖然Math.floor()和Math.ceil()是用于向下和向上取整的方法,但可以通過判斷數(shù)字的符號(hào)來選擇使用哪一個(gè),以達(dá)到向0取整的效果。不過這種方法相對復(fù)雜,且不如前幾種方法直觀。
function truncate(num) {
return num < 0 ? Math.ceil(num) : Math.floor(num);
}
let num = 4.9;
let truncated = truncate(num); // 4
console.log(truncated);
let negNum = -4.9;
let negTruncated = truncate(negNum); // -4
console.log(negTruncated);5.使用字符串操作:
可以通過將數(shù)字轉(zhuǎn)換為字符串,然后去掉小數(shù)點(diǎn)及其后的部分,最后再轉(zhuǎn)換回?cái)?shù)字。這種方法雖然可以實(shí)現(xiàn)效果,但效率較低且不夠直觀,不建議使用。
function truncate(num) {
return parseInt(num.toString(), 10);
}
let num = 4.9;
let truncated = truncate(num); // 4
console.log(truncated);常見取整函數(shù)
在JavaScript中,有多種方法可以對數(shù)字進(jìn)行取整操作。這些方法各有特點(diǎn),適用于不同的場景。以下是常見的幾種取整函數(shù)及其詳解:
- Math.floor()
- 功能:向下取整,即返回小于或等于給定數(shù)字的最大整數(shù)。
- 語法:
Math.floor(x) - 示例:
console.log(Math.floor(4.9)); // 輸出: 4 console.log(Math.floor(-4.1)); // 輸出: -5
- Math.ceil()
- 功能:向上取整,即返回大于或等于給定數(shù)字的最小整數(shù)。
- 語法:
Math.ceil(x) - 示例:
console.log(Math.ceil(4.1)); // 輸出: 5 console.log(Math.ceil(-4.9)); // 輸出: -4
- Math.round()
- 功能:四舍五入,即返回最接近給定數(shù)字的整數(shù)。
- 語法:
Math.round(x) - 示例:
console.log(Math.round(4.5)); // 輸出: 5 console.log(Math.round(4.4)); // 輸出: 4 console.log(Math.round(-4.5)); // 輸出: -4
- Math.trunc()
- 功能:移除小數(shù)部分,只保留整數(shù)部分,不進(jìn)行四舍五入。
- 語法:
Math.trunc(x) - 示例:
console.log(Math.trunc(4.9)); // 輸出: 4 console.log(Math.trunc(-4.1)); // 輸出: -4
位運(yùn)算符取整
- 功能:通過位運(yùn)算符
|、^、&、~、<<、>>、>>>可以將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),相當(dāng)于去掉小數(shù)部分(類似Math.trunc,但僅對32位整數(shù)有效)。 - 示例:
console.log(4.9 | 0); // 輸出: 4 console.log(-4.1 | 0); // 輸出: -4
- 注意:位運(yùn)算符取整僅適用于32位整數(shù)范圍(-231-1),超出范圍會(huì)導(dǎo)致精度丟失。
- 功能:通過位運(yùn)算符
- 雙否定(Double Negation)
- 功能:通過雙否定操作將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)(相當(dāng)于
Math.trunc)。 - 示例:
console.log(~~4.9); // 輸出: 4 console.log(~~-4.1); // 輸出: -4
- 注意:雙否定操作對超出JavaScript安全整數(shù)范圍的數(shù)字無效。
- 功能:通過雙否定操作將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)(相當(dāng)于
- 字符串轉(zhuǎn)換
- 功能:通過字符串轉(zhuǎn)換并截取整數(shù)部分來取整。
- 示例:
console.log(parseInt(4.9)); // 輸出: 4 console.log(parseInt(-4.1)); // 輸出: -4
- 注意:這種方法依賴于字符串轉(zhuǎn)換,性能可能不如其他內(nèi)置方法。
- toFixed() 后轉(zhuǎn)整數(shù)
- 功能:通過
toFixed()方法將數(shù)字轉(zhuǎn)換為指定小數(shù)位數(shù)的字符串,然后轉(zhuǎn)換為整數(shù)。 - 示例:
const num = 4.9; console.log(parseFloat(num.toFixed(0))); // 輸出: 5 const num2 = -4.1; console.log(parseFloat(num2.toFixed(0))); // 輸出: -4
- 注意:
toFixed()方法返回的是字符串,需要再次轉(zhuǎn)換為數(shù)字。
- 功能:通過
總結(jié)
- Math.floor():向下取整。
- Math.ceil():向上取整。
- Math.round():四舍五入。
- Math.trunc():移除小數(shù)部分。
- 位運(yùn)算符:通過位操作移除小數(shù)部分(32位整數(shù)范圍內(nèi)有效)。
- 雙否定:通過雙否定操作移除小數(shù)部分(32位整數(shù)范圍內(nèi)有效)。
- 字符串轉(zhuǎn)換:通過字符串轉(zhuǎn)換并截取整數(shù)部分。
- toFixed() 后轉(zhuǎn)整數(shù):通過
toFixed()方法轉(zhuǎn)換為字符串后再轉(zhuǎn)為整數(shù)。
每種方法都有其適用的場景和限制,選擇時(shí)需根據(jù)具體需求進(jìn)行權(quán)衡。
到此這篇關(guān)于Javascript取整函數(shù)及向零取整幾種常用的方法的文章就介紹到這了,更多相關(guān)js取整函數(shù)及向零取整內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js+html5實(shí)現(xiàn)canvas繪制簡單矩形的方法
這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制簡單矩形的方法,涉及html5圖形繪制的基本技巧,需要的朋友可以參考下2015-06-06
JS實(shí)現(xiàn)仿新浪黃色經(jīng)典滑動(dòng)門效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿新浪黃色經(jīng)典滑動(dòng)門效果代碼,是一款非常簡單的經(jīng)典鼠標(biāo)響應(yīng)滑動(dòng)切換效果,涉及JavaScript基于鼠標(biāo)事件動(dòng)態(tài)操作頁面元素的技巧,需要的朋友可以參考下2015-09-09
js實(shí)現(xiàn)json數(shù)據(jù)行到列的轉(zhuǎn)換的實(shí)例代碼
為了實(shí)現(xiàn)這樣的數(shù)據(jù)顯示出來三個(gè)序列,分別為鄭州、新鄉(xiāng)、安陽的電量,就需要自己實(shí)現(xiàn)對這樣數(shù)據(jù)的轉(zhuǎn)換,轉(zhuǎn)換成如下的形式:2013-08-08
跟我學(xué)習(xí)javascript的垃圾回收機(jī)制與內(nèi)存管理
跟我學(xué)習(xí)javascript的垃圾回收機(jī)制與內(nèi)存管理,感興趣的小伙伴們可以參考一下2015-11-11
Javascript DOM的簡介,節(jié)點(diǎn)和獲取元素詳解
下面小編就為大家分享一篇詳談DOM的簡介,節(jié)點(diǎn)和獲取元素,具有非常好的參考價(jià)值,一起跟隨小編過來看看吧,希望對大家有所幫助2021-11-11
基于JavaScript實(shí)現(xiàn)新增內(nèi)容滾動(dòng)播放效果附完整代碼
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)新增內(nèi)容滾動(dòng)播放效果,效果非常棒,實(shí)現(xiàn)代碼簡單易懂,需要的朋友可以參考下2017-08-08
JS 60秒后重新發(fā)送驗(yàn)證碼的實(shí)例講解
下面小編就為大家?guī)硪黄狫S 60秒后重新發(fā)送驗(yàn)證碼的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07

