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中的一个中文字符串截取函数
Feb 14 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
smarty中常用方法实例总结
Aug 07 PHP
php生成验证码函数
Oct 20 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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
深入PHP异步执行的详解
2013/06/03 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php制作动态随机验证码
2015/02/12 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
python django中8000端口被占用的解决
2019/12/17 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
2014年道德讲堂实施方案
2014/03/05 职场文书
工程质量保证书
2015/05/09 职场文书
昆虫记读书笔记
2015/06/26 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
MySQL创建管理子分区
2022/04/13 MySQL