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.ini中的php-5.2.0配置指令详解
Mar 27 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
php中array_fill函数的实例用法
Mar 02 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 COOKIE及时生效的方法介绍
2014/02/14 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
浅谈django中的认证与登录
2016/10/31 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
python实现飞机大战项目
2020/03/11 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
人事部主管岗位职责
2013/12/26 职场文书
PHP基本语法
2021/03/31 PHP
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
nginx中proxy_pass各种用法详解
2021/11/07 Servers
MySql数据库 查询时间序列间隔
2022/05/11 MySQL
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL