nan/"非数字"并非旨在查看数据类型是否为数字/文本等。
NaN 实际上是一组可以存储在浮点数变量中的值,但实际上并不计算为正确的浮点数。
浮点数系统有三个部分:1 位用于符号(+/-),8 位指数和 23 位小数部分。
有一些规则管理可以放置在每个部分中的值的组合,并且某些值保留用于诸如无穷大之类的数字。这导致某些组合无效,或者换句话说,不是数字。
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
is_nan — 检查浮点数是否为 NAN
返回给定 num
是否为 NAN
(“非数字”)。
NAN
来自未定义的数学运算,例如在函数输入域之外传递参数时。平方根(sqrt())仅针对正数定义,传递负数将导致 NAN
。其他返回 NAN
的运算示例包括将 INF
除以 INF
以及涉及现有 NAN
值的任何运算。
注意:
示例 #1 is_nan() 示例
<?php
$nan = sqrt(-1);
var_dump($nan, is_nan($nan));
?>
以上示例将输出
float(NAN) bool(true)
nan/"非数字"并非旨在查看数据类型是否为数字/文本等。
NaN 实际上是一组可以存储在浮点数变量中的值,但实际上并不计算为正确的浮点数。
浮点数系统有三个部分:1 位用于符号(+/-),8 位指数和 23 位小数部分。
有一些规则管理可以放置在每个部分中的值的组合,并且某些值保留用于诸如无穷大之类的数字。这导致某些组合无效,或者换句话说,不是数字。
如果您不能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
?>
从 PHP 7 开始,字符串“NaN”也计算为 NaN 值。
示例
var_dump( (float) 'NaN' );
PHP 5.x 和 HHVM
float(0)
PHP 7.0
float(NAN)