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中目录,文件操作详谈
Mar 19 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
PHP实现图片上传并压缩
Dec 22 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 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依赖注入和控制反转
2016/05/11 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
Prototype Selector对象学习
2009/07/23 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
javascript数组的使用
2013/03/28 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
python滑块验证码的破解实现
2019/11/10 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
Python实现微信表情包炸群功能
2021/01/28 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
谢师宴家长致辞
2015/07/27 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang