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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
php session 错误
May 21 PHP
php mysql Errcode: 28 终极解决方法
Jul 01 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
php调用shell的方法
Nov 05 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
laravel请求参数校验方法
Oct 10 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
一个简洁的多级别论坛
2006/10/09 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
会计专业自我评价
2014/02/12 职场文书
简单租房协议书范本
2014/08/20 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL