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 08 PHP
joomla内置的表单验证功能使用方法
Jun 11 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
php中对象引用和复制实例分析
Aug 14 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
python代码实现图书管理系统
2020/11/30 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
代理商会议邀请函
2014/01/27 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
企业法人任命书
2015/09/21 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS