第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在JavaScript中將字符串轉(zhuǎn)換為整數(shù)?

在JavaScript中將字符串轉(zhuǎn)換為整數(shù)?

在JavaScript中將字符串轉(zhuǎn)換為整數(shù)?如何在JavaScript中將字符串轉(zhuǎn)換為整數(shù)?
查看完整描述

4 回答

?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

在javascript中將字符串轉(zhuǎn)換為數(shù)字有兩種主要方法。一種方法是解析它,另一種方法是將其類型更改為數(shù)字。其他答案中的所有技巧(例如一元加)都涉及隱含地將字符串的類型強(qiáng)制轉(zhuǎn)換為數(shù)字。您也可以使用Number函數(shù)顯式執(zhí)行相同的操作。

解析

var parsed = parseInt("97", 10);

parseInt和parseFloat是用于將字符串解析為數(shù)字的兩個(gè)函數(shù)。解析會(huì)在遇到無法識別的字符時(shí)靜默停止,這對于解析像“92px”這樣的字符串很有用,但它也有點(diǎn)危險(xiǎn),因?yàn)樗粫?huì)在輸入錯(cuò)誤時(shí)給你任何錯(cuò)誤,而是你除非字符串以數(shù)字開頭,否則將返回NaN。字符串開頭的空格將被忽略。這是一個(gè)例子,它做了一些不同于你想要的東西,并沒有表明出現(xiàn)任何問題:

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97

總是將基數(shù)指定為第二個(gè)參數(shù)是一種好習(xí)慣。在較舊的瀏覽器中,如果字符串以0開頭,如果未指定基數(shù),則會(huì)將其解釋為八進(jìn)制,這會(huì)讓很多人感到意外。如果沒有指定基數(shù),則通過使字符串以0x開頭來觸發(fā)十六進(jìn)制的行為,例如0xff。標(biāo)準(zhǔn)實(shí)際上使用ecmascript 5進(jìn)行了更改,因此如果沒有指定基數(shù),則當(dāng)前導(dǎo)0時(shí),現(xiàn)代瀏覽器不再觸發(fā)八進(jìn)制。parseInt將基數(shù)理解為基數(shù)36,在這種情況下,大寫和小寫字母都被視為等價(jià)。

將字符串的類型更改為數(shù)字

上面提到的所有其他不使用parseInt的技巧都涉及隱式地將字符串強(qiáng)制轉(zhuǎn)換為數(shù)字。我更愿意明確地這樣做,

var cast = Number("97");

這與解析方法有不同的行為(盡管它仍然忽略空格)。它更嚴(yán)格:如果它不理解整個(gè)字符串而不是它返回NaN,那么你不能將它用于像字符串這樣的字符串97px。由于您需要原始數(shù)字而不是數(shù)字包裝器對象,因此請確保不要放在new數(shù)字函數(shù)前面。

顯然,轉(zhuǎn)換為Number會(huì)給出一個(gè)可能是float而不是整數(shù)的值,所以如果你想要一個(gè)整數(shù),你需要修改它。有幾種方法可以做到這一點(diǎn):

var rounded = Math.floor(Number("97.654"));  // other options are Math.ceil, Math.roundvar fixed = Number("97.654").toFixed(0); 
// rounded rather than truncatedvar bitwised = Number("97.654")|0;  // do not use for large numbers

任何按位運(yùn)算符(這里我做了一個(gè)按位或,但你也可以做一個(gè)雙重否定,如在前面的回答或一個(gè)位移)將把值轉(zhuǎn)換為32位整數(shù),其中大多數(shù)將轉(zhuǎn)換為有符號整數(shù)。請注意,這不希望您想要大整數(shù)。如果整數(shù)不能用32位表示,它將換行。

~~"3000000000.654" === -1294967296// This is the same asNumber("3000000000.654")|0"3000000000.654" >>> 0 === 3000000000 
// unsigned right shift gives you an extra bit"300000000000.654" >>> 0 === 3647256576 // but still fails with larger numbers

要使用更大的數(shù)字,您應(yīng)該使用舍入方法

Math.floor("3000000000.654") === 3000000000// This is the same asMath.floor(Number("3000000000.654"))

請記住,所有的這些方法的理解指數(shù)形式,所以2e2200不是NaN的。此外,Number理解“Infinity”,而解析方法則不理解。

習(xí)慣

這些方法中的任何一種都不可能完全符合您的要求。例如,通常我希望在解析失敗時(shí)拋出錯(cuò)誤,并且我不需要支持Infinity,指數(shù)或前導(dǎo)空格。根據(jù)您的用例,有時(shí)編寫自定義轉(zhuǎn)換函數(shù)是有意義的。

始終檢查Number或其中一個(gè)解析方法的輸出是否是您期望的數(shù)字。您幾乎肯定會(huì)想要isNaN確保該數(shù)字不是NaN(通常是您發(fā)現(xiàn)解析失敗的唯一方法)。


查看完整回答
反對 回復(fù) 2019-05-29
  • 4 回答
  • 0 關(guān)注
  • 2656 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號