PHP Conference Japan 2024

is_nan

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

is_nan檢查浮點數是否為 NAN

說明

is_nan(浮點數 $num): 布林值

返回給定的 num 是否為 NAN(「非數值」)。

未定義的數學運算會返回 NAN,例如傳遞函式輸入域以外的參數時。平方根 (sqrt()) 僅針對正數定義,傳遞負數將導致 NAN。其他返回 NAN 的運算範例包括將 INF 除以 INF,以及任何涉及現有 NAN 值的運算。

注意:

雖然名稱叫做「非數值」(Not A Number),但 NAN 卻是 float 類型的一個有效值。

注意

NAN 不會等於 NAN。要檢查一個浮點數是否為 NAN,必須使用 is_nan() 函式。使用 $float === NAN 的檢查方式將不會生效。

參數

num

要檢查的 float

返回值

如果 numNAN,則返回 true,否則返回 false

範例

範例 #1 is_nan() 函式範例

<?php
$nan
= sqrt(-1);

var_dump($nan, is_nan($nan));
?>

以上範例會輸出:

float(NAN)
bool(true)

參見

新增註記

使用者貢獻的註記 4 則註記

25
darkangel at moveinmod dot net
18 年前
nan/「非數值」並非用於判斷資料類型是數值、文字或其他類型。

NaN 實際上是一組可以儲存在浮點數變數中的值,但實際上並不會計算為一個正確的浮點數。

浮點數系統分為三個部分:1 個位元表示正負號 (+/-)、8 個位元表示指數,以及 23 個位元表示小數部分。
有一些規則規定哪些值的組合可以放在每個部分中,並且一些值被保留用於表示像無限大這樣的數字。這導致某些組合無效,或者換句話說,不是一個數字。
14
10basetom
9 年前
如果您無法 100% 確定字串的資料類型,我會使用 is_numeric() 而不是 ctype_digit()。文件中的範例:

<?php
$numeric_string
= '42';
$integer = 42;

ctype_digit($numeric_string); // true
ctype_digit($integer); // false (ASCII 42 是 * 字元)

is_numeric($numeric_string); // true
is_numeric($integer); // true
?>
2
ScorpioT1000
4 年前
function is_nan2($n) {
return $n !== $n;
}

is_nan2(NAN); // true
1
php at darkain dot com
8 年前
從 PHP 7 開始,字串 'NaN' 也會被評估為 NaN 值。

範例
var_dump( (float) 'NaN' );

PHP 5.x 與 HHVM
float(0)

PHP 7.0
float(NAN)
To Top