【问题标题】:PHP wrong result with pow(11, 23)pow(11, 23) 的 PHP 错误结果
【发布时间】:2020-12-30 03:06:48
【问题描述】:

我对 pow(11, 23) 有疑问。 PHP 结果为 895430243255237361008640。 根据这个德国加密教程(第5页) http://www.dkruse.de/dokumente/netzwerke/Sicher3_Asymm_Verschluesselung.pdf 结果应该是 895430243255237372246531。

另外,当我计算 895430243255237372246531 % 187 时,结果是 126。 根据教程,它应该是 88。我使用 PHP 版本 7.3.11。

我很乐意为您提供任何帮助

【问题讨论】:

  • 听起来这个数字可能大于PHP_INT_MAX。你能回显那个常量并检查一下吗?
  • 你需要 php BCMath 库php.net/manual/en/book.bc.php
  • 谢谢。我不知道 PHP_INT_MAX,只是测试了 bcpowmod()。这行得通!最好的问候
  • @ACJ no ,当我做 var_dump(pow(11, 23)) 它返回 float
  • 那么浮动也有类似的限制>?

标签: php math pow


【解决方案1】:

php 不能准确计算。我做了数学计算,得到的结果和你一样。本文档于 2011 年在 Mac 计算机上创建。也许 PHP 5 有问题,或者 x64 和 x32 架构之间存在差异,但 idk

【讨论】:

  • 整数计算是精确的,只要所涉及的数字在PHP_INT_MINPHP_INT_MAX 之间。这些常量的值确实取决于架构。
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多