PHP计算真正的大/大数字显示错误的结果[重复]

Posted

技术标签:

【中文标题】PHP计算真正的大/大数字显示错误的结果[重复]【英文标题】:PHP calculating real big/large numbers shows wrong result [duplicate] 【发布时间】: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的信息。 ***.com/questions/35169951/… @AksenP 逻辑:2+2 不应该是 3 或 5。如果您不理解问题,那么为什么要否决和评论问题? 【参考方案1】:

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

看看this function

【讨论】:

【参考方案2】:

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

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

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

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

结果如预期:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

【讨论】:

以上是关于PHP计算真正的大/大数字显示错误的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

(转)算法大数乘法问题及其高效算法

使用 jQuery File Upload 上传超过 1GB 到 2GB 的大文件 - blueimp(基于 Ajax)php / yii 它在 Firefox 浏览器中显示错误

大数据干货基于Hadoop的大数据平台实施——整体架构设计

大数据干货基于Hadoop的大数据平台实施——整体架构设计

Laxcus大数据管理系统单机集群版

从具有 NULL 列的大表中删除重复项,这也需要考虑