【问题标题】:PHP calculating real big/large numbers shows wrong result [duplicate]PHP计算真正的大/大数字显示错误的结果[重复]
【发布时间】:2020-02-24 08:16:56
【问题描述】:

据此wiki page

37975227936943673922808872755445627854565536638199 × 40094690950920881030683735292761468389214899724061

结果应该是:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

我测试过:

<?php
$a = '37975227936943673922808872755445627854565536638199';
$b = '40094690950920881030683735292761468389214899724061';

echo "A: ".$a."\n";
echo "B: ".$b."\n";

$c = $a * $b; 

echo "Result:\n".number_format($c, 0, '', '')."\n";
echo "Expected: \n1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139";
?>

我得到了结果:

答:37975227936943673922808872755445627854565536638199
B: 40094690950920881030683735292761468389214899724061

结果: 1522605027922533518260457400714874678658400574018662242210976145948887793656784833912073618129420288

预期: 1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

为什么 PHP 显示错误的结果?

有没有办法得到正确的结果?

【问题讨论】:

  • 你为什么需要这个结果?
  • 阅读更多关于PHP_INT_MAX的信息。 stackoverflow.com/questions/35169951/…
  • @AksenP 逻辑:2+2 不应该是 3 或 5。如果您不理解问题,那么为什么要否决和评论问题?

标签: php


【解决方案1】:

有 php 函数可以对保存为字符串的数字执行数学函数:

看看this function

【讨论】:

    【解决方案2】:

    有人说 PHP 无法处理如此大的数字。但我仍然不明白 PHP 输出的结果对我来说似乎足够大,但不正确。

    有没有办法得到正确的结果?

    ,对于 PHP 1 行解决方案(使用 Python3):

    echo exec('python3 -c "print('.$a.' * '.$b.')"');
    

    结果如预期:

    1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2014-03-11
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多