[英]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 );
}
要將String
為Number
,請使用+
, 這是最快的方法 :
一元+運算符也將其操作數類型轉換為數字,因為它不進行任何額外的數學運算,所以它是將字符串轉換為數字的最快方法
總的來說,可能你需要這個:
if(!isNumeric(inputValue)){
alert('invalid number');
}else{
var num = +inputValue;
}
isNumeric
從jQuery
借來的
這是我寫的代碼,用於重復獲取輸入,直到獲得正確的輸入。
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.