PHP数据类型之整数类型、浮点数的介绍
语法:整型值可以使用十进制,十六进制或八进制表示,前面可以加上可选的符号(- 或者 +)。 八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x。
$int1=100; //十进制
$int2=-123; //负数
$int3=0123; //八进制数
$int4=0x1A;//十六进制数
echo PHP_INT_SIZE; //显示一个整数用几个字节来表示
echo "<br/>";
echo PHP_INT_MAX;echo "<br/>";//整数最大有多少数 (2147483647)
$fmax=2147483648;
var_dump(PHP_INT_MAX); //一个数超出了 integer 的范围,将会被解释为 float类型。
echo "<br/>";
var_dump($fmax);
浮点数 :浮点数(双精度数或实数)
$a=1.34;
$b=1.8e308;
$c=8e-10;
var_dump($b);
//浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(不能超过14位)
//精度要从左边开始的第一个非0的数字计算.
如:$a=567.9999899 //输出567.9999899
$b=789.8812345678543 //输出789.88123456785
$c=0.000000008907777777 //输出0.000000008907777777
重要理解:精度要从左边开始的第一个非0的数字计算.
相关推荐
-
PHP中round()函数对浮点数进行四舍五入的方法
本文实例讲述了PHP中round()函数对浮点数进行四舍五入的方法.分享给大家供大家参考.具体方法如下: 语法:round(x,prec) 参数 描述 x 可选,规定要舍入的数字. prec 可选,规定小数点后的位数. 说明:返回将 x 根据指定精度 prec(十进制小数点后数字的数目)进行四舍五入的结果,prec 也可以是负数或零(默认值). 提示和注释 注释:php默认不能正确处理类似 "12,300.2" 的字符串. 注释:prec 参数是在 php 4 中被引入的,实例代码如下
-
简单谈谈php浮点数精确运算
bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值.这里大数直接用一个由0-9组成的string表示,计算结果返回的也是一个 string. bcadd - 将两个高精度数字相加 bccomp - 比较两个高精度数字,返回-1, 0, 1
-
PHP浮点数精度问题汇总
一.PHP浮点数精度损失问题 先看下面这段代码: 复制代码 代码如下: $f = 0.57; echo intval($f * 100); //56 结果可能有点出乎你的意外,PHP遵循IEEE 754双精度: 浮点数, 以64位的双精度, 采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位). 符号位:最高位表示数据的正负,0表示正数,1表示负数. 指数位:表示数据以2为底的幂,指数采用偏移码表示 尾数:表示数据小数点后的有效数字. 再来看看小数用二进制怎么表示:
-
PHP中两个float(浮点数)比较实例分析
本文实例讲述了PHP中两个float(浮点数)比较方法.分享给大家供大家参考.具体如下: 最近在开发一个合同管理系统的时候,涉及到两个浮点数比较,算是把我郁闷惨了. 在N久以前,就不晓得从哪里听来的一个"不要用等号去比较浮点数"的"真理",自己平时也在用,好像没有出现啥问题,可这次问题总算是来了. <?php $sum = "12300.00"; $a = "10000.30"; $b = "2000.30&q
-
php的sprintf函数的用法 控制浮点数格式
控制浮点数打印格式 浮点数的打印和格式控制是sprintf 的一大常用功能,浮点数使用格式符"%f"控制,默认保留小数点后6 位数字,比如: 复制代码 代码如下: sprintf("%f", 3.1415926); //结果:"3.141593" 但,有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:"%m.nf"格式,其中m 表示打印数字的整体宽度,n 表示小数点后的位数.比如: 复制代码 代码如下: sprintf
-
PHP浮点数的一个常见问题
PHP是一种弱类型语言, 这样的特性, 必然要求有无缝透明的隐式类型转换, PHP内部使用zval来保存任意类型的数值, zval的结构如下(5.2为例): struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount; zend_uchar type; /* active type */ zend_uchar is_ref; }; 上面的结构中, 实际保存数
-
PHP实现大数(浮点数)取余的方法
本文实例讲述了PHP实现大数(浮点数)取余的方法.分享给大家供大家参考,具体如下: 一般我们进行取余运算第一个想到的就是用百分号%,但当除数是个很大的数值,超出了int范围时,这样取余就不准确了. php大数(浮点数)取余函数: /** * php大数取余 * * @param int or float $bn 除数 * @param int $sn 被除数 * @return int 余数 */ //大数(浮点数)取余方法 function Kmod($bn, $sn) { return in
-
php 浮点数比较方法详解
浮点数运算精度问题 首先看一个例子: <?php $a = 0.1; $b = 0.9; $c = 1; var_dump(($a+$b)==$c); var_dump(($c-$b)==$a); ?> $a+$b==$c 返回true,正确 $c-$b==$a 返回false,错误 为什么会这样呢? 运算后,精度为20位时实际返回的内容如下: <?php $a = 0.1; $b = 0.9; $c = 1; printf("%.20f", $a+$b); // 1
-
PHP中浮点数计算比较及取整不准确的解决方法
浮点数计算结果比较 一则浮点数计算例子如下: 复制代码 代码如下: $a = 0.2+0.7; $b = 0.9; var_dump($a == $b); 打印出的结果是:bool(false).也就是说在这里 0.2+0.7 的计算结果与 0.9 并不相等,这显然是有违我们的常识的. 对此问题,PHP官方手册曾又说明:显然简单的十进制分数如 0.2 不能在不丢失一点点精度的情况下转换为内部二进制的格式.这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数.例如,十进制的 1/3 变
-
php判断两个浮点数是否相等的方法
本文实例讲述了php判断两个浮点数是否相等的方法.分享给大家供大家参考.具体分析如下: 由于浮点数直接用==判断是否相等是不完全正确的,所以下面给出了一个方法,先设定的一个精度,如果在精度范围内相等则认为相等,否则认为不能 <?php $delta = 0.00001; $a = 1.00000001; $b = 1.00000000; if (abs($a - $b) < $delta) { /* $a and $b are equal */ } ?> 希望本文所述对大家的php程序设
随机推荐
- EXT中xtype的含义分析
- python的三目运算符和not in运算符使用示例
- Java中重载与重写的对比与区别
- oracle中not exists对外层查询的影响详解
- Python 字符串中的字符倒转
- ASP.NET显示农历时间改进版
- javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
- 用js一次改变多个input的readonly属性值的方法
- JS原型链 详解及示例代码
- js和php邮箱地址验证的实现方法
- C#计算文件MD5校验的方法
- 放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
- Java字节码指令集的使用详细
- Android 使用Vitamio打造自己的万能播放器(8)——细节优化
- sql server启动不了, MSSQL 18052错误: 9003,严重度: 20,状态: 1 .
- PHP会话处理的10个函数
- showModelDialog弹出文件下载窗口的使用示例
- 详解Bootstrap四种图片样式
- Android百度地图poi范围搜索
- Android使用CountDownTimer实现倒数定时器效果