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
Windows下的PHP5.0详解
Nov 18 PHP
php echo 输出字符串函数详解
May 13 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
如何用php获取文件名后缀
Jun 09 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
php比较两个绝对时间的大小
Jan 31 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 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静态新闻列表自动生成代码
2007/06/14 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python采集百度百科的方法
2015/06/05 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
python直接访问私有属性的简单方法
2016/07/25 Python
详解python基础之while循环及if判断
2017/08/24 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
django 控制页面跳转的例子
2019/08/06 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
土木工程应届生求职信
2013/10/31 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
车贷收入证明范本
2014/09/14 职场文书
病人慰问信范文
2015/02/15 职场文书
自我评价优缺点范文
2015/03/11 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang