提问人:Tomas Cuellar Escalona 提问时间:11/4/2021 更新时间:11/4/2021 访问量:47
PHP - 使用浮点进行 Aritmetic 运算
PHP - Aritmetic operations with floating point
问:
我需要执行非常大的数字操作,例如:(-8.3802985809867E + 217 x 4.8047258326981E + 215)
我正在用PHP编写一个系统来求解线性方程矩阵,但是由于数字非常大,因此它给了我NAN或INF。
我使用了普通模块:($a % $b),也是 bc_mod 和 fmod,但两者都不适合我。
如何执行非常大和非常非常小的操作?
答:
0赞
jspit
11/4/2021
#1
您可以分别处理尾数和指数。乘法的代码示例:
$a = -8.3802985809867E+217;
$b = 4.8047258326981E+215;
$ap = explode('e',sprintf('%0.15e',$a));
$bp = explode('e',sprintf('%0.15e',$b));
$axb = $ap[0]*$bp[0]."e".sprintf('%+d',$ap[1]+$bp[1]);
//"-40.26503707779e+432"
这里使用的是简单的学校数学:十的幂乘以指数相加。但是,结果不能表示为浮点数。原则上,最好寻找合适的类/库。
上一个:如何在 PHP 中正确计算指数值
下一个:PHP 浮点数、对象和精度
评论