【发布时间】:2019-03-09 02:51:29
【问题描述】:
PHP 中的 NaN 是什么概念?它在何时何地使用,为什么有用?
下面这个函数是做什么用的?拜托,我需要对下面的代码进行解释。
<?php echo is_nan(200) . "<br>"; echo is_nan(acos(1.01)); ?>
【问题讨论】:
PHP 中的 NaN 是什么概念?它在何时何地使用,为什么有用?
下面这个函数是做什么用的?拜托,我需要对下面的代码进行解释。
<?php echo is_nan(200) . "<br>"; echo is_nan(acos(1.01)); ?>
【问题讨论】:
NaN 的意思是“不是数字”。我们基本上将虚数(例如:复数)称为 NaN,例如:-1 的平方根 (i),acos(1.01)。这些数字无法计算/计算。
nan/"not a number" 并不是要查看数据类型是否为 数字/文本/等..
NaN 实际上是一组可以存储在浮点数中的值 变量,但实际上并不计算为正确的浮点数 号码。
浮点系统分为三个部分: 1 位用于符号 (+/-)、8 位指数和 23 位小数部分。有 管理哪些值组合可以放入每个值的规则 部分,并且某些值保留用于诸如无穷大之类的数字。 这会导致某些组合无效,或者换句话说, 不是数字。
来自is_nan()函数的documentation:
bool is_nan ( float $val )
详情:检查 val 是否为“非数字”,如 acos(1.01) 的结果。
返回如果 val 不是数字,则返回 TRUE,否则返回 FALSE。
所以,这个函数基本上是用来检查数学函数和运算的返回值的有效性,并且需要一个浮点数作为参数。
现在,200 是一个有效数字。所以,is_nan(200) 将返回 False。
同时,acos(1.01) 正在尝试查找 1.01 的反余弦。从数学中我们很清楚,余弦函数的返回值在-1到+1的范围内。所以不能存在 1.01(大于 1)的值。因此,acos(1.01) 无法确定。因此它不是一个有效的数字。因此,is_nan(acos(1.01)) 将返回 True。
【讨论】: