JavaScript提供將數值轉成整數的方法parseInt,用於轉換字符串數據“123”,或者浮點數1.23。
複製代碼代碼如下:
parseInt("1"); // 1
parseInt("1.2"); // 1
parseInt("-1.2"); // -1
parseInt(1.2); // 1
parseInt(0); // 0
parseInt("0"); // 0
但是這個parseInt函數不是經常有效:
複製代碼代碼如下:
parseInt('06'); // 6
parseInt('08'); // 0 注意,谷歌新版已修正
parseInt("1g"); // 1
parseInt("g1"); // NaN
為此,我寫了一個函數將任意數據轉換成整數。
複製代碼代碼如下:
function toInt(number) {
return number*1 | 0 || 0;
}
//test
toInt("1"); // 1
toInt("1.2"); // 1
toInt("-1.2"); // -1
toInt(1.2); // 1
toInt(0); // 0
toInt("0"); // 0
toInt(Number.NaN); // 0
toInt(1/0); // 0
這裡還有網友寫的轉換函數,也記下來提供參考,同樣適合將數據轉換成整數。
複製代碼代碼如下:
function toInt(number) {
return number && + number | 0 || 0;
}
注意了,以上兩個函數js能表示的整數有效範圍是-1569325056 ~ 1569325056
為了在js中表達更大範圍的數值,我還寫了一個函數提供參考,如下:
複製代碼代碼如下:
function toInt(number) {
return Infinity === number ? 0 : (number*1 || 0).toFixed(0)*1;
}