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


Posted in PHP onApril 01, 2016

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

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

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

如:

<?php
$n = '22222222222222222222222222220';
echo $n;
?>

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

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

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

<?php
function calc($m,$n,$x){
  $errors=array(
    '被除数不能为零',
    '负数没有平方根'
  );
  switch($x){
    case 'add':
      $t=bcadd($m,$n);
      break;
    case 'sub':
      $t=bcsub($m,$n);
      break;
    case 'mul':
      $t=bcmul($m,$n);
      break;
    case 'div':
      if($n!=0){
        $t=bcdiv($m,$n);
      }else{
        return $errors[0];
      }
      break;
    case 'pow':
      $t=bcpow($m,$n);
      break;
    case 'mod':
      if($n!=0){
        $t=bcmod($m,$n);
      }else{
        return $errors[0];
      }
      break;
    case 'sqrt':
      if($m>=0){
        $t=bcsqrt($m);
      }else{
        return $errors[1];
      }
      break;
  }
  $t=preg_replace("/\..*0+$/",'',$t);
  return $t;
}
/*用法举例*/
echo calc('11111111111111111111111111111111110','10','add');
?>

使用方法:

calc(参数1参数2,参数3);
参数3指定运算方法:add加,sub减,mul乖,div除,pow幂,mod取模,sqrt求算术平方根
加减乖除:参数1 加上/减去/乘以/除以 参数2
幂:参数1 的 参数2 次方.
模:参数1 除以 参数2 得到的余数.
算术平方根:求 参数1 的算术平方根.参数2不起作用,但不能省略.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP制作图型计数器的例子
Oct 09 PHP
php在字符串中查找另一个字符串
Nov 19 PHP
PHP 采集心得技巧
May 15 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php计算年龄精准到年月日
Nov 17 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP哈希表实现算法原理解析
Dec 11 PHP
Zend Studio使用技巧两则
Apr 01 #PHP
PHP数学运算与数据处理实例分析
Apr 01 #PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 #PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 #PHP
php获取本机真实IP地址实例代码
Mar 31 #PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 #PHP
php中使用GD库做验证码
Mar 31 #PHP
You might like
解析strtr函数的效率问题
2013/06/26 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
编辑找工作求职信范文
2013/12/16 职场文书
市场营销求职信范文
2014/02/21 职场文书
学术诚信承诺书
2014/05/26 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
我的收音机情缘
2022/04/05 无线电