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桌面中心(三) 修改数据库
Mar 11 PHP
优化PHP代码的53条建议
Mar 27 PHP
php中cookie的作用域
Mar 27 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP简单预防sql注入的方法
Sep 27 PHP
php并发加锁示例
Oct 17 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
javascript 小型动画组件与实现代码
2010/06/02 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
Python sys.path详细介绍
2013/10/17 Python
python模块之time模块(实例讲解)
2017/09/13 Python
详解python 爬取12306验证码
2019/05/10 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
体育运动会广播稿
2014/10/05 职场文书
个人年终总结怎么写
2015/03/09 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android