我需要檢查是否值isNaN("") === true
但它返回false,但parseFloat("")
返回NaN
。如何解析parseFloat(「」)和isNaN(「」)
爲什麼我需要這是因爲我正在使用JSON.stringify()
進行散列檢查,而敲除observable而不是數值會返回字符串數值。
E.g.它將返回"1.23"
而不是1.23
。
問題:如何解析字符串數值而不會得到NaN
作爲結果?
我需要檢查是否值isNaN("") === true
但它返回false,但parseFloat("")
返回NaN
。如何解析parseFloat(「」)和isNaN(「」)
爲什麼我需要這是因爲我正在使用JSON.stringify()
進行散列檢查,而敲除observable而不是數值會返回字符串數值。
E.g.它將返回"1.23"
而不是1.23
。
問題:如何解析字符串數值而不會得到NaN
作爲結果?
如何解析字符串數值而不會得到NaN結果?
那麼......你不能,如果值不能被解析爲數值。但是"1.23"
可以被解析爲一個數值:
var num = parseFloat("1.23");
console.log(num); // 1.23
如果需要檢查,如果結果將是NaN
,檢查結果:
isNaN(parseFloat(yourInput)) === true
...除了有正好零點在=== true
那一部分,所以:
isNaN(parseFloat(yourInput))
parseFloat
以及如果您將字符串傳入isNaN
遵循不同的規則,則使用默認的強制轉換號碼。特別是,parseFloat
將從第一個非數字開始停止解析,但isNaN
[實際上]使用Number
函數,如果存在非數字字符,則該函數將失敗。因此,如果您需要依靠從parseFloat
得到的結果不是NaN
,則必須致電parseFloat
並將其結果傳遞到isNaN
。
下面是一個例子:"1.23aaa"
讓我們來看看我們所看到的有:
console.log(parseFloat("1.23aaa")); // 1.23
console.log(isNaN("1.23aaa")); // true!!
console.log(isNaN(parseFloat("1.23aaa"))); // false
parseFloat
停止嘗試,作爲第一a
的,但是從字符串默認脅迫編號你傳遞一個字符串轉換成isNaN
調用不是。
好點。我只是想用'isNaN'來檢查值,但是這樣當我真正檢查'parseFloat'結果可以解決問題。 – skmasq
@skmasq:爲了完整:另一種方法是繼續使用'isNaN(string)',然後使用'Number(string)'來解析它。這是在這兩種情況下使用相同規則的另一種方式。 –
我很困惑你到底想要什麼。你想過濾掉'「」'? –
如果您不想退出,請在未預期輸入時選擇回退,例如'x = + str || 0;'(簡單情況,因爲'0 || 0'給出'0',雖然它來自_RHS_) –