当前位置:首页 > PHP教程 > php应用 > 列表

PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法

发布:smiling 来源: PHP粉丝网  添加日期:2019-10-31 17:59:52 浏览: 评论:0 

本文实例讲述了PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法。分享给大家供大家参考,具体如下:

PHP计算大数值运算时会出错,当数字太大时,数值会变成科学计数.那怎么来进行PHP超大数值运算,包括加减乘除,幂运算,平方根,取模运算呢?

要解决科学计数的问题,只要赋值时加一对引号即可.

如:

  1. <?php 
  2.  
  3. $n = '22222222222222222222222222220'
  4.  
  5. echo $n
  6.  
  7. ?> 

如果不加引号,显示2.2222222222222E+28,加引号后显示22222222222222222222222222220

超大数值运算,包括加减乘除,幂运算,平方根,取模运算.

使用PHP的bcmath函数创建一个自定义函数,代码如下:

  1. <?php 
  2.  
  3. function calc($m,$n,$x){ 
  4.  
  5.   $errors=array
  6.  
  7.     '被除数不能为零'
  8.  
  9.     '负数没有平方根' 
  10.  
  11.   ); 
  12.  
  13.   switch($x){ 
  14.  
  15.     case 'add'
  16.  
  17.       $t=bcadd($m,$n); 
  18.  
  19.       break
  20.  
  21.     case 'sub'
  22.  
  23.       $t=bcsub($m,$n); 
  24.  
  25.       break
  26.  
  27.     case 'mul'
  28.  
  29.       $t=bcmul($m,$n); 
  30.  
  31.       break
  32.  
  33.     case 'div'
  34.  
  35.       if($n!=0){ 
  36.  
  37.         $t=bcdiv($m,$n); 
  38.  
  39.       }else
  40.  
  41.         return $errors[0]; 
  42.  
  43.       } 
  44.  
  45.       break
  46.  
  47.     case 'pow'
  48.  
  49.       $t=bcpow($m,$n); 
  50.  
  51.       break
  52.  
  53.     case 'mod'
  54.  
  55.       if($n!=0){ 
  56.  
  57.         $t=bcmod($m,$n); 
  58.  
  59.       }else
  60.  
  61.         return $errors[0]; 
  62.  
  63.       } 
  64.  
  65.       break
  66.  
  67.     case 'sqrt'
  68.  
  69.       if($m>=0){ 
  70.  
  71.         $t=bcsqrt($m); 
  72.  
  73.       }else
  74.  
  75.         return $errors[1]; 
  76.  
  77.       } 
  78.  
  79.       break
  80.  
  81.   } 
  82.  
  83.   $t=preg_replace("/\..*0+$/",'',$t); 
  84.  
  85.   return $t
  86. //phpfensi.com 
  87.  
  88. /*用法举例*/ 
  89.  
  90. echo calc('11111111111111111111111111111111110','10','add'); 
  91.  
  92. ?> 

使用方法:

calc(参数1参数2,参数3);

参数3指定运算方法:add加,sub减,mul乖,div除,pow幂,mod取模,sqrt求算术平方根

加减乖除:参数1 加上/减去/乘以/除以 参数2

幂:参数1 的 参数2 次方.

模:参数1 除以 参数2 得到的余数.

算术平方根:求 参数1 的算术平方根.参数2不起作用,但不能省略.

Tags: PHP数字运算

分享到:

相关文章