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 浏览器中显示错误