成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

你不知道的取數(shù)值整數(shù)部分的冷知識(shí)

calx / 2763人閱讀

摘要:我們可以用測(cè)一下具體實(shí)現(xiàn)原理,請(qǐng)參考文檔注意因?yàn)椴僮鲗⒉僮鲾?shù)轉(zhuǎn)為,所以它不能處理超過(guò)位的數(shù)值取整,而有效整數(shù)的范圍是位。綜上所以如果要考慮壓縮代碼的大小,且明確知道數(shù)值范圍不會(huì)超過(guò)位整數(shù)的時(shí)候,可以考慮使用取整。

在處理數(shù)值的時(shí)候,獲取浮點(diǎn)數(shù)的整數(shù)和小數(shù)部分,是一種常見(jiàn)的操作,在JavaScript中有許多方法可以達(dá)到目的,但也正因?yàn)榉椒ū姸?,所以哪種方法更好,也值得我們仔細(xì)研究一番。

1. parseInt
let num = 3.75;
console.log(parseInt(num)); // 3
num = -3.75;
console.log(parseInt(num)); // -3

parseInt(3.75),會(huì)先將3.75轉(zhuǎn)換成字符串"3.75", 然后在轉(zhuǎn)換成3.
這個(gè)方法是一個(gè)將字符串轉(zhuǎn)換為整數(shù)的方法,如果參數(shù)不是一個(gè)字符串,則將其轉(zhuǎn)換成字符串,性能開(kāi)銷(xiāo)大。
關(guān)鍵還有一個(gè)致命的問(wèn)題:

console.log(parseInt(0.00000001));  // 1
console.log(parseInt(1000000000000000000000)); // 1

分析:
這是因?yàn)?strong>toString(),0.00000001.toString()===1e-8而1000000000000000000000..toString() === 1e+21。

2. Math.ceil + Math.floor Math.ceil() 向上取整 Math.floor() 向上取整
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實(shí)現(xiàn)trunc方法,要比使用parseInt的性能好,因?yàn)槭∪チ宿D(zhuǎn)字符串。我們可以用jsperf測(cè)一下:

3. Math.trunc()
console.log(Math.trunc(3.75));    // 3
console.log(Math.trunc(-3.75));   // -3
4. |

具體實(shí)現(xiàn)原理,請(qǐng)參考 ECMA-262文檔

log(3.75 | 0);    // 3
console.log(-3.75 | 0);   // -3

注意:
因?yàn)閎itwise操作將操作數(shù)轉(zhuǎn)為Int32,所以它不能處理超過(guò)32位的數(shù)值取整,而JavaScript有效整數(shù)的范圍是53位。

const num = 17179869184.89;
console.log(num | 0); // 0
console.log(Math.trunc(num)); // 17179869184

綜上: 所以如果要考慮壓縮代碼的大小,且明確知道數(shù)值范圍不會(huì)超過(guò)32位整數(shù)的時(shí)候,可以考慮使用 | 0取整。否則,還是使用Math方法吧。

附: 性能測(cè)試 https://jsperf.com

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106304.html

相關(guān)文章

  • Python 基礎(chǔ)篇 - Python入門(mén)

    摘要:除此之外的特定形式還有二進(jìn)制序列類(lèi)型,那么我們?cè)谶@里所說(shuō)的序列主要包含以下三種列表列表是一種可變序列,一般形式為,方括號(hào)內(nèi)的各項(xiàng)間用逗號(hào)分隔。 引言 對(duì)于以前沒(méi)有接觸過(guò)任何編程語(yǔ)言的人來(lái)說(shuō),首先能明確編程的目的很重要,往往能明確一個(gè)目的,在日后的學(xué)習(xí)中遇到困難時(shí)心態(tài)就會(huì)輕松許多。當(dāng)今計(jì)算機(jī)文化的多元化發(fā)展,涌現(xiàn)出了大數(shù)據(jù)、分布式計(jì)算、神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)等眾多新概念,即便這樣,任何意義上...

    VioletJack 評(píng)論0 收藏0
  • 你不知道的按位運(yùn)算

    摘要:相信大家都知道二進(jìn)制數(shù)按位運(yùn)算的規(guī)則來(lái)看一些簡(jiǎn)單的例子單純的二進(jìn)制位之間的這些運(yùn)算相當(dāng)簡(jiǎn)單,但對(duì)我們實(shí)際編程并沒(méi)有直接幫助,因?yàn)榫幊踢^(guò)程中需要的經(jīng)常是數(shù)字間的運(yùn)算,比如。 先來(lái)看LeetCode上的Divide Two Integers題目要求: Divide two integers without using multiplication, division and mod ope...

    luoyibu 評(píng)論0 收藏0
  • Python數(shù)值處理(一)

    摘要:取整使用函數(shù)可以輕松的對(duì)浮點(diǎn)數(shù)進(jìn)行取整操作。這是因?yàn)楹瘮?shù)在應(yīng)對(duì)這種與兩個(gè)整數(shù)距離相同的情況時(shí),會(huì)取到最近的偶數(shù)上去。如果你特別需要精確的數(shù)值,那么可以使用模塊。 round()取整 使用round()函數(shù)可以輕松的對(duì)浮點(diǎn)數(shù)進(jìn)行取整操作。示例如下: >>> round(1.23, 1) 1.2 >>> round(1.27, 1) 1.3 >>> round(-0.36, 1) -0.4...

    isaced 評(píng)論0 收藏0
  • js數(shù)據(jù)結(jié)構(gòu)-散列表(哈希表)

    摘要:散列表散列表,也叫哈希表,是根據(jù)鍵而直接訪(fǎng)問(wèn)在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。這個(gè)映射函數(shù)稱(chēng)做散列函數(shù),存放記錄的數(shù)組稱(chēng)做散列表。 散列表 散列表(Hash table,也叫哈希表),是根據(jù)鍵(Key)而直接訪(fǎng)問(wèn)在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),它通過(guò)計(jì)算一個(gè)關(guān)于鍵值的函數(shù),將所需查詢(xún)的數(shù)據(jù)映射到表中一個(gè)位置來(lái)訪(fǎng)問(wèn)記錄,這加快了查找速度。這個(gè)映射函數(shù)稱(chēng)做散列函數(shù),存放記錄的數(shù)組稱(chēng)做散列表。 ...

    call_me_R 評(píng)論0 收藏0
  • Java和Python中的整數(shù)除法,取余,舍入

    摘要:整數(shù)除法對(duì)兩個(gè)不能整除的整數(shù)做除法,就要面對(duì)舍入的問(wèn)題。中的舍入除了缺省的舍入方式,還有多種舍入可供選擇。就是說(shuō),我們輸入的十進(jìn)制數(shù),在計(jì)算機(jī)內(nèi)部都是用二進(jìn)制來(lái)表示的。 關(guān)于除法,你也許覺(jué)得沒(méi)什么值得談?wù)摰模吘剐W(xué)的時(shí)候體育老師就教過(guò)我們了。然而對(duì)于編程中使用的除法,我覺(jué)得還是有很多值得注意的細(xì)節(jié)的。為什么我想深究一下?因?yàn)槲胰粘V饕褂肑ava和Python編程,而它們的除法在細(xì)節(jié)...

    hosition 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<