計算機編程
返回一個 Boolean 值,指明提供的值是否是保留值 NaN (不是數字)。
NaN 即 Not a Number
isNaN(numValue)
必選項 numvalue 參數為要檢查是否為 NAN 的值。
說明
假如值是 NaN或者是一個非數字值(比如:字元串和對象), 那么 isNaN 函式返回 true ,否則返回 false。 使用這個函式的典型情況是檢查 parseInt 和 parseFloat 方法的輸入值。
還有一種辦法,變數可以與它自身進行比較。 假如比較的結果不等,那么它就是 NaN 。 這是因為 NaN 是唯一與自身不等的值。
isNaN函式用法示例:比如我有一個textbox用於錄入數字型的數據,在提交表單的時候我要驗證該textbox中的值是否為數據,那么我們可以使用isNaN函式。
function checkValue()
{
if(isNaN(document.all.textbox.value))
{
alert("請用數字錄入!");
return false;
}
}
isNaN的典型使用是為parseInt和parseFloat方法的輸入值進行一個提前的檢驗,但這種簡單結果並不好。雖然可能有一些教課書上也這么說,甚至於錯誤地認為其是一個檢查parseInt和parseFloat的返回值,這樣都是錯誤的。
parseInt與parseFloat是將一個字元型按數字進行一個轉化。但自身還有錯誤處理的,如果你的輸入值不是一個數字時,則parseInt和parseFloat返回一個訊息:“is not number”,但一般的情況下我們都是對一個數字樣式的字元串進行轉換的,誰會無聊到轉化非數字型的呢?所以你輸入的參數是否合格,可以先進行一次isNaN檢查的。
但如果我們有意識的以下行為,事先是不能用isNaN進行檢查的,數字開頭中間含有字母時,如果用isNaN進行檢查是通不過的。
如果是一個空串或是一個空格,而isNaN是做為數字0進行處理的,而parseInt與parseFloat是返回一個錯誤訊息,這個isNaN檢查不嚴密而導致的。
兩個函式是獨立的,並不會誰為誰而生存,isNaN與parseInt/parseFloat並沒有關係。
Matlab函式
函式名稱: isnan
函式功能: 判斷數組的元素是否是NaN。
不是數,函式返值為1,否則為0。
NaN是Not a Number的縮寫。
isnan常用來修正數組中出現非數字的情況。
在matlab中以下情況會出現NaN:
任何關於NaN的數值運算, 如sqrt(NaN)
加減法, 如(+Inf)+(-Inf)
乘法, 如0乘以Inf
除法, 如0/0、Inf/Inf
Remainder,比如rem(x, y)其中y為0或x是Inf。
讀取execl中的數據,如果數據中有inf的。
用xlsread讀取數據後就會現在NAN。
語法格式:
TF = isnan(A)
返回一個和A尺寸一樣的數組, 如果A中某個元素是NaN, 則對應TF中元素是1, 否則TF中對應元素是0。
相關:isfinite、inf、nan、isinf
程式示例
%經典的修正的語句是:
x(isnan(x)==1)=inf;%x是矩陣 inf可以替換為你想要的任何數字
>> A = [Inf + Inf, Inf - Inf, Inf, NaN, sqrt(NaN), sqrt(Inf), 0 * Inf, 0 / 0, Inf / Inf]
A = Inf NaN Inf NaN NaN Inf NaN NaN NaN
>> TF = isnan(A)
TF = 0 1 0 1 1 0 1 1 1
1.%經典的修正的語句是:
x(isnan(x)==1)=inf;%x是矩陣 inf可以替換為你想要的任何數字
2.>> A = [Inf + Inf, Inf - Inf, Inf, NaN, sqrt(NaN), sqrt(Inf), 0 * Inf, 0 / 0, Inf / Inf]
A = Inf NaN Inf NaN NaN Inf NaN NaN NaN
>> TF = isnan(A)
TF = 0 1 0 1 1 0 1 1 1