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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
php之字符串变相相减的代码
Mar 19 PHP
深入解析php模板技术原理【一】
Jan 10 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
php 文本文件的读取效率
Feb 10 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
PHP校验15位和18位身份证号的类封装
Nov 07 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常用表单验证类用法实例
2015/06/18 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python中tell()方法的使用详解
2015/05/24 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python 项目转化为so文件实例
2019/12/23 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
PyQt5实现简单的计算器
2020/05/30 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
自荐信结尾
2013/10/27 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
实践论读书笔记
2015/06/29 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL