PHP Conference Japan 2024

is_nan

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

is_nan检查浮点数是否为 NAN

描述

is_nan(float $num): bool

返回给定 num 是否为 NAN(“非数字”)。

NAN 来自未定义的数学运算,例如在函数输入域之外传递参数时。平方根(sqrt())仅针对正数定义,传递负数将导致 NAN。其他返回 NAN 的运算示例包括将 INF 除以 INF 以及涉及现有 NAN 值的任何运算。

注意:

尽管名称为“非数字”,但 NANfloat 类型的有效值。

警告

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 个注释

darkangel at moveinmod dot net
18 年前
nan/"非数字"并非旨在查看数据类型是否为数字/文本等。

NaN 实际上是一组可以存储在浮点数变量中的值,但实际上并不计算为正确的浮点数。

浮点数系统有三个部分:1 位用于符号(+/-),8 位指数和 23 位小数部分。
有一些规则管理可以放置在每个部分中的值的组合,并且某些值保留用于诸如无穷大之类的数字。这导致某些组合无效,或者换句话说,不是数字。
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
?>
ScorpioT1000
4 年前
function is_nan2($n) {
return $n !== $n;
}

is_nan2(NAN); // true
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