PHP中有关长整数的一些操作教程
前言
在PHP,数字类型只有int和float两种,它们的位数取决于系统,而且没有uint,所以跟其它系统通信的时候就有诸多不便。如果int溢出,则自动转换为float,用科学计数法来表示,并且小数点后只保留15位,之后的数据被四舍五入,这将对接下来的数据操作产生影响,比如说进制转换,进行运算等等都会出错。
对于PHP有:
int : min~max: -9223372036854775808 ~ 9223372036854775807(~92亿亿)
float : min~max: -1.7976931348623E+308 ~ 1.7976931348623E+308(~1.8E308)
在这个时候我们就需要考虑用字符串形式来进行相关处理,如果一定要进行数学计算,就要用到BC Math(任意精度数学) Functions,在PHP手册中可以自行查阅:http://php.net/manual/zh/function.bcmod.php
此处举一个将长整数转化为二进制的简单例子,将2^128转化为二进制:由于php的进制转换函数也是有最大值限制的,所以在这里采用短除法,来转化为二进制,采用原始函数pow求幂次
其输出结果如下,很显然精度不够,并且二进制是错误的
正确表示:
输出结果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
相关推荐
-
PHP取整数函数常用的四种方法小结
ceil - 进一法取整 说明 float ceil ( float value ) 返回不小于 value 的下一个整数,value 如果有小数部分则进一位.ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大. 例子 1. ceil() 例子 复制代码 代码如下: <?php echo ceil(4.3); // 5 echo ceil(9.999); // 10 ?> floor - 舍去法取整 说明 float floor ( float
-
PHP把小数转成整数3种方法
float floor ( float value) 舍去法取整 返回不大于 value 的下一个整数,将 value 的小数部分舍去取整.floor() 返回的类型仍然是 float,因为float 值的范围通常比 integer 要大. 复制代码 代码如下: echo floor(4.3); // 4 echo floor(9.999); // 9 float ceil ( float value) 进一法取整 返回不小于 value 的下一个整数,value 如果有小数部分
-
PHP数据类型之整数类型、浮点数的介绍
语法:整型值可以使用十进制,十六进制或八进制表示,前面可以加上可选的符号(- 或者 +). 八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x. $int1=100; //十进制$int2=-123; //负数$int3=0123; //八进制数$int4=0x1A;//十六进制数 echo PHP_INT_SIZE; //显示一个整数用几个字节来表示echo "<br/>";echo PHP_INT_MAX;echo "<br/>&
-
PHP判断FORM表单或URL参数来的数据是否为整数的方法
PHP判断FORM表单或URL参数来的数据是否为整数,is_int函数对于FORM表单或URL参数过来的数据是没有办法判断是否是整数的,因为FORM过来的是字符串. 用is_numeric可以判断是否为数字类型,再判断是否有小数点就可以判断是不是整数了 if(!is_numeric($page)||strpos($page,".")!==false){ echo "不是整数"; }else{ echo "是整数"; } 有时候我们需要判断id是否
-
PHP中将字符串转化为整数(int) intval() printf() 性能测试
背景.概述 早在Sql注入横行的前几年,字符串转化为整数就已经被列为每个web程序必备的操作了.web程序将get或post来的id.整数等值强制经过转化函数转化为整数,过滤掉危险字符,尽可能降低系统本身被Sql注入的可能性. 现如今,虽然Sql注入已经逐渐淡出历史舞台,但是,为了保证web程序的正常运行,减少出错概率,更好的保证用的满意度,我们同样需要将用户的不正确输入转化为我们所需要的. 转化方式 在PHP中,我们可以使用3种方式将字符串转化为整数. 1.强制类型转换方式 强制类型转换方式,
-
PHP操作MongoDB时的整数问题及对策说明
MongoDB本身有两种整数类型,分别是:32位整数和64位整数,但旧版的PHP驱动不管操作系统是32位还是64位,把所有整数都当做32位整数处理,结果导致64位整数被截断.为了在尽可能保持兼容性的前提下解决这个问题,新版PHP驱动加入了mongo.native-long选项,以期在64位操作系统中把整数都当做64位来处理,有兴趣的可参考:64-bit integers in MongoDB. 那么PHP驱动真的完全解决了整数问题么?NO!在处理group操作的时候还有BUG: 为了说明问题,我
-
php计算两个整数的最大公约数常用算法小结
本文实例讲述了php计算两个整数的最大公约数常用算法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php //计时,返回秒 function microtime_float () { list( $usec , $sec ) = explode ( " " , microtime ()); return ((float) $usec + (float) $sec ); } /////////////////////////////////
-
PHP正则判断一个变量是否为正整数的方法
方法1 判断正整数 $keyword = '10'; // 0 1.1 1 if(preg_match("/^[1-9][0-9]*$/",$keyword)){ echo "是正整数!"; exit(); } 方法2 判断正整数 if ((floor($jp_total) - $jp_total) !==0){ echo "不是正整数"; }else{ echo "是正整数"; } 方法3 判断整数 if(!is_numer
-
使用字符串函数输出整数化的PHP版本号
再用用程序时,一般需要对php版本号整数化后进行判断,从而确定输出. <?php $temp=explode(".",phpversion()); //以数组形式获取版本号 $num=count($temp); //计算数组中的元素数量 $phpver=0; switch($num) { cas 3: $phpver=$phpver+(intval($temp[2])); cas 2: $phpver=$phpver+(in
-
PHP整数取余返回负数的相关解决方法
PHP语言虽然功能强大,但并不代表其没有缺点,在编写代码的过程中未免会遇到一些让人头痛的问题.下面我们将为大家介绍有关PHP整数取余返回负数的解决办法. 我们先来看个例子. 复制代码 代码如下: $res = 16244799483; echo $res%9999999; // 输出结果为 -5069794, 正确的结果应该是4801107 其实这也算上PHP一个BUG吧.最主要是PHP是个弱类型语言.他内置了机器来判断用户的类型. 但是机器毕竟是机器.也有判断出错的时候.就像上面.所以这时候我
随机推荐
- Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
- vue.js实现简单轮播图效果
- 参考:关于Javascript中实现暂停的几篇文章
- C#实现解压GZip文件的方法
- Python的Urllib库的基本使用教程
- Javascript之文件操作
- jQuery中DOM操作实例分析
- windows+apache+mod_python配置django运行环境
- Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
- 转换中文日期的PHP程序
- Android编程中软键盘基本用法分析
- c++制作的时间函数类
- PHP性能测试工具xhprof安装与使用方法详解
- docker安装kong网关的方法示例
- 生产制造追溯系统之再说条码打印
- 使用js实现一个简单的滚动条过程解析
- C#动态代码生成控件后其他事件不能获取该控件值的解决方法
- vuedraggable+element ui实现页面控件拖拽排序效果
- MySQL语句整理及汇总介绍
- 解决Android启动APP的一瞬间系统栏会变成蓝色问题