【问题标题】:exp() returns NaN stuffexp() 返回 NaN 的东西
【发布时间】:2012-05-20 11:08:40
【问题描述】:

好吧,我卡住了。我有这个 PHP 代码:

    echo exp(12), '<br/>';
    echo exp(4.2);

就像在 PHP.net 页面上一样。还有我在屏幕上看到的:

    NAN
    298.86740096706

但随之而来的是有史以来最奇怪的事情。我认为可能有一些 PHP.ini 问题,比如 2.67e8 等(我的意思是里面有'e')或其他东西。但是,当我把上面的代码改成:

    echo (2.67e8), '<br/>';
    echo exp(4.2);

我突然看到了这个:

    267000000
    NAN

这是一种 WTF,尤其是因为最后一个 NAN,起初它是一个非常正常、平静的浮点 298.86740096706,但后来无缘无故地被 NAN 取代了。你有什么想法?请问?

【问题讨论】:

  • 无法复制问题。 php -r "echo exp(12), '&lt;br/&gt;'; echo exp(4.2);" = 162754.791419&lt;br/&gt;66.686331040925。使用PHP 5.3.10
  • 我也试过了:php &gt; echo exp(12) . "\n" . exp(4.2) . "\n"; 162754.791419 66.686331040925 Arch Linux 上的 PHP 5.4.3
  • 你写的代码是你的代码,你所有的代码,完全是你的代码,除了你的代码之外什么都没有?
  • @OP:你能复制这种行为吗?每次执行都会出错吗?某些处决的结果/现象是否不同?
  • 好的,现在我尝试以这种方式循环它:do { $c=exp(4.2); echo 'point '; } while (is_nan($c));,我有point point 66.686331040925,所以它有点工作,但仍然以一种奇怪、缓慢的方式

标签: php nan exp


【解决方案1】:

如果为真,这一定是您的 PHP 版本中的错误。请report it

顺便说一句,我无法在 PHP 5.3.2 上重现它。运行:

php -r 'do { $c = exp(4.2); echo "point "; } while (is_nan($c)); echo "$c\n";'

产生预期的输出:

point 66.686331040925

【讨论】:

  • 或者他可以先尝试安装更新的版本,如果问题仍然存在再报告...
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2011-08-05
相关资源
最近更新 更多