簡體   English   中英

將字符串轉換為javascript中的數字

[英]convert string to a number in javascript

我想解析包含經度和緯度的用戶輸入。 我想要做的是將字符串強制轉換為數字,保留其符號和小數位。 但我想要做的是在用戶輸入無效時顯示消息。 我應該遵循哪一個

parseFloat(x)

第二

new Number(x)

第三

~~x

第四

+x

我使用Number(x) ,如果我必須在這兩者之間做出選擇,因為它不會允許尾隨垃圾。 (嗯,它“允許”它,但結果是NaN 。)

即, Number("123.45balloon")NaN ,但是parseFloat("123.45balloon")123.45 (作為數字)。

正如克林先生指出的那樣,哪些是“更好”取決於你。

編輯 - 啊,你已經添加回+x~~x 正如我在評論中寫的那樣, +x相當於使用Number()構造函數,但我認為由於+運算符的語法靈活性,它有點風險。 也就是說,剪切和粘貼很容易引入錯誤。 如果你知道你想要一個整數(一個32位整數),那么~~x形式是好的。 對於緯度/長度,這可能不是你想要的。

第一個更好。 它是明確的,而且是正確的。 你說你想要解析浮點數。 ~~x會給你一個整數。

要測試input是否為數字,請使用:

function isNumeric(obj){
    return !isNaN( parseFloat(obj) ) && isFinite( obj );
}

要將StringNumber ,請使用+這是最快的方法

一元+運算符也將其操作數類型轉換為數字,因為它不進行任何額外的數學運算,所以它是將字符串轉換為數字的最快方法

總的來說,可能你需要這個:

if(!isNumeric(inputValue)){
    alert('invalid number');
}else{
    var num = +inputValue;
}

isNumericjQuery借來的

這是我寫的代碼,用於重復獲取輸入,直到獲得正確的輸入。

var d;

do {
    d = prompt("Enter a number");
    d = new Number(d);
} while( isNaN(d) );

document.write( d );

注意:如果任何字符是非數字的,則new Number(d)將始終給出NaN ,而parseFloat(d)將忽略尾隨的無效字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM