將一個數(shù)轉(zhuǎn)換為整數(shù)
- JavaScript 里面提供了好幾種方法糕再,讓我們把一個數(shù)轉(zhuǎn)換為一個整數(shù)辨液,比如有以下三種
-
Math.floor()
,Math.ceil()
,Math.round()
:最優(yōu)湿酸,最常用 - 位運算符:運算效率略高呻粹,但是可讀性差闸翅,而且只能轉(zhuǎn)換 32 位整數(shù)舟铜,不常用
-
parseInt()
:適用于將字符串轉(zhuǎn)換為整數(shù)贵扰,不適合將一個數(shù)轉(zhuǎn)換為整數(shù)
-
- 它們都有各自的適用范圍和優(yōu)缺點仇穗,但是我們實際開發(fā)中最常用的,還是第一種戚绕,也就是
Math
對象提供的 3 個函數(shù) - 這 3 個函數(shù)在轉(zhuǎn)換正數(shù)的時候纹坐,其結(jié)果是不言而喻的,但是當(dāng)涉及到負(fù)數(shù)時列肢,就似乎變得有點難以理解了
- 現(xiàn)在筆者將它們的工作原理總結(jié)如下恰画,正負(fù)數(shù)通吃。首先瓷马,我們需要在紙上畫一條一維坐標(biāo)軸(初中數(shù)學(xué)知識)
- 如果傳入的數(shù)是一個整數(shù)或者是一個「不正乘┗梗」的數(shù) (
NaN
,Infinity
,-Infinity
),這三個函數(shù)都會將其原樣返回 - 如果傳入的數(shù)是一個小數(shù)欧聘,那么我們定位到坐標(biāo)軸上這個小數(shù)的位置片林,然后
-
Math.floor()
會從它的左邊開始,找到離它最近的那個整數(shù),并將其返回Math.floor(1.2) === 1
Math.floor(1.5) === 1
Math.floor(1.7) === 1
Math.floor(-1.2) === -2
Math.floor(-1.5) === -2
Math.floor(-1.7) === -2
-
Math.ceil()
會從它的右邊開始费封,找到離它最近的那個整數(shù)焕妙,并將其返回Math.ceil(1.2) === 2
Math.ceil(1.5) === 2
Math.ceil(1.7) === 2
Math.ceil(-1.2) === -1
Math.ceil(-1.5) === -1
Math.ceil(-1.7) === -1
-
Math.round()
會從它的左邊和右邊同時開始,找到離它最近的那個整數(shù)弓摘,并將其返回- 如果傳入的小數(shù)剛好處于兩個整數(shù)的正中間 ( 比如
1.5
)焚鹊,那么只會從右邊開始找整數(shù)Math.round(1.2) === 1
Math.round(1.5) === 2
Math.round(1.7) === 2
Math.round(-1.2) === -1
Math.round(-1.5) === -1
Math.round(-1.7) === -2
- 如果傳入的小數(shù)剛好處于兩個整數(shù)的正中間 ( 比如
-
- 如果傳入的數(shù)是一個整數(shù)或者是一個「不正乘┗梗」的數(shù) (
總結(jié)
- 這只是一個很小的知識點,但是很多書或者文章都解釋得不太清楚
- 這里我們只需要引入一個數(shù)學(xué)工具(坐標(biāo)軸)韧献,一切都變得明晰起來