两个数字的加法是指数值

时间:2014-07-02 12:52:55

标签: php

当我在php中添加两个整数并回显结果时,打印结果将采用指数格式,例如 7.8274928374928E+136

是否有解决方案以非指数表达式(没有小数点)打印结果,如下所示:

78274928374928...

<?php
$a=7867869786987263478632476347823647823648723648723648723648726;
$b=78274928374928374982374982749823749287349827492847298472983284723984729837429837429837498274829749827498274893279847984732984732984732984;
$c=$a+$b;
echo $c;

?>

由于

1 个答案:

答案 0 :(得分:1)

您的号码太大,以至于遇到integer overflow。因此,您的所有数字都将转换为浮点数。另外,你会失去精确度。如果将数字更改为始终小于2 ^ 31-1,则可以解决问题。

如果你确实需要那些大数字(例如加密),你应该依赖BC Math等外部函数(Mark Ba​​ker也提到GNU Multiple Precision我还不知道的事情:)

如果不允许使用外部函数,则必须编写自己的类并在其上定义所有数学运算......但这对于您尝试实现的内容可能是一个大问题。

如果您不希望或不允许自己编写BigInteger类,那么您的问题的答案可能是:“不,根据这些要求,这是不可能的。”