摘要:我們可以用測一下具體實現(xiàn)原理,請參考文檔注意因為操作將操作數(shù)轉為,所以它不能處理超過位的數(shù)值取整,而有效整數(shù)的范圍是位。綜上所以如果要考慮壓縮代碼的大小,且明確知道數(shù)值范圍不會超過位整數(shù)的時候,可以考慮使用取整。
在處理數(shù)值的時候,獲取浮點數(shù)的整數(shù)和小數(shù)部分,是一種常見的操作,在JavaScript中有許多方法可以達到目的,但也正因為方法眾多,所以哪種方法更好,也值得我們仔細研究一番。
1. parseIntlet num = 3.75; console.log(parseInt(num)); // 3 num = -3.75; console.log(parseInt(num)); // -3
parseInt(3.75),會先將3.75轉換成字符串"3.75", 然后在轉換成3.
這個方法是一個將字符串轉換為整數(shù)的方法,如果參數(shù)不是一個字符串,則將其轉換成字符串,性能開銷大。
關鍵還有一個致命的問題:
console.log(parseInt(0.00000001)); // 1 console.log(parseInt(1000000000000000000000)); // 1
分析:
這是因為toString(),0.00000001.toString()===1e-8而1000000000000000000000..toString() === 1e+21。
function trunc (num) { if (num>=0) { return Math.floor(num) } else { return Math.ceil(num) } } console.log(trunc(3.75)); // 3 console.log(trunc(-3.75)); // -3
使用Math.round和Math.ceil實現(xiàn)trunc方法,要比使用parseInt的性能好,因為省去了轉字符串。我們可以用jsperf測一下:
3. Math.trunc()console.log(Math.trunc(3.75)); // 3 console.log(Math.trunc(-3.75)); // -34. |
具體實現(xiàn)原理,請參考 ECMA-262文檔
log(3.75 | 0); // 3 console.log(-3.75 | 0); // -3
注意:
因為bitwise操作將操作數(shù)轉為Int32,所以它不能處理超過32位的數(shù)值取整,而JavaScript有效整數(shù)的范圍是53位。
const num = 17179869184.89; console.log(num | 0); // 0 console.log(Math.trunc(num)); // 17179869184
綜上: 所以如果要考慮壓縮代碼的大小,且明確知道數(shù)值范圍不會超過32位整數(shù)的時候,可以考慮使用 | 0取整。否則,還是使用Math方法吧。
附: 性能測試 https://jsperf.com
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/106304.html
摘要:除此之外的特定形式還有二進制序列類型,那么我們在這里所說的序列主要包含以下三種列表列表是一種可變序列,一般形式為,方括號內(nèi)的各項間用逗號分隔。 引言 對于以前沒有接觸過任何編程語言的人來說,首先能明確編程的目的很重要,往往能明確一個目的,在日后的學習中遇到困難時心態(tài)就會輕松許多。當今計算機文化的多元化發(fā)展,涌現(xiàn)出了大數(shù)據(jù)、分布式計算、神經(jīng)網(wǎng)絡、機器學習等眾多新概念,即便這樣,任何意義上...
摘要:取整使用函數(shù)可以輕松的對浮點數(shù)進行取整操作。這是因為函數(shù)在應對這種與兩個整數(shù)距離相同的情況時,會取到最近的偶數(shù)上去。如果你特別需要精確的數(shù)值,那么可以使用模塊。 round()取整 使用round()函數(shù)可以輕松的對浮點數(shù)進行取整操作。示例如下: >>> round(1.23, 1) 1.2 >>> round(1.27, 1) 1.3 >>> round(-0.36, 1) -0.4...
摘要:散列表散列表,也叫哈希表,是根據(jù)鍵而直接訪問在內(nèi)存存儲位置的數(shù)據(jù)結構。這個映射函數(shù)稱做散列函數(shù),存放記錄的數(shù)組稱做散列表。 散列表 散列表(Hash table,也叫哈希表),是根據(jù)鍵(Key)而直接訪問在內(nèi)存存儲位置的數(shù)據(jù)結構。也就是說,它通過計算一個關于鍵值的函數(shù),將所需查詢的數(shù)據(jù)映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數(shù)稱做散列函數(shù),存放記錄的數(shù)組稱做散列表。 ...
摘要:整數(shù)除法對兩個不能整除的整數(shù)做除法,就要面對舍入的問題。中的舍入除了缺省的舍入方式,還有多種舍入可供選擇。就是說,我們輸入的十進制數(shù),在計算機內(nèi)部都是用二進制來表示的。 關于除法,你也許覺得沒什么值得談論的,畢竟小學的時候體育老師就教過我們了。然而對于編程中使用的除法,我覺得還是有很多值得注意的細節(jié)的。為什么我想深究一下?因為我日常主要使用Java和Python編程,而它們的除法在細節(jié)...
閱讀 2826·2021-11-11 17:21
閱讀 696·2021-09-23 11:22
閱讀 3640·2019-08-30 15:55
閱讀 1702·2019-08-29 17:15
閱讀 628·2019-08-29 16:38
閱讀 1004·2019-08-26 11:54
閱讀 2625·2019-08-26 11:53
閱讀 2817·2019-08-26 10:31