本文目录一览:
- 1、php里ceil函数和intval函数有什么区别 ?
- 2、请教,php保留两位小数,但不四舍五入
- 3、PHP怎么实现整除
- 4、为什么php用小数点相减不对呢
- 5、php取整的几种方式
- 6、php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
php里ceil函数和intval函数有什么区别 ?
ceil(x)接受一个浮点数x,返回比x大的最小整数
ceil(3.21) = 4
ceil(9.0) = 9
ceil(-2.333) = 2
intval返回一个整数,接受2个参数,第一个是数或者包含数的字符串,第二个参数是第一个参数使用的进制,除非第一个参数是字符串,否则第二个参数没有作用,参数中如果有小数,小数部分将被截断
inval(123.999) = 123
inval(33.123) = 33
intval('c', 16) = 12
intval(1000, 2) = 8
intval('1000', 2) = 8
请教,php保留两位小数,但不四舍五入
php四舍五入函数有:floor函数、ceil函数、round与intval
使用floor函数:
$a=1.23456;
echo floor($a*100)/100;
PHP怎么实现整除
如果我们使用’/'操作符进行除法运算时,如果遇到无法除尽的情况,会得到小数值。如果我只希望得到整数部分,怎么办呢?
在PHP的数学函数库里提供了多个函数供我们选择:
1、round函数, 对浮点数进行四舍五入。这个应该是最符合大家需要的吧。
php echo round(10/3); // 3
2、ceil函数, 进一法取整。
php echo ceil(4.3); // 5
3、floor ,舍去法取整,舍去小数部分
php echo floor(4.3); // 4 echo floor(9.999); // 9
为什么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 变成了 0.3333333...。
我们将上面的变量用双精度格式打印出来:
代码如下:
$a = 0.2+0.7;
$b = 0.9;
printf("%0.20f", $a);
echo 'br /';
printf("%0.20f", $b);
输出结果如下:
代码如下:
0.89999999999999991118
0.90000000000000002220
显然在这里,实际上作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。需要说明的是,这不是PHP的问题,而是计算机内部处理浮点数的问题!在 C、JAVA 等语言中也会遇到同样的问题。
所以要比较两个浮点数,需要将其控制在我们需要的精度范围内再行比较,因此使用 bcadd() 函数来对浮点数想加并进行精度转换(为字符串):
代码如下:
var_dump(bcadd(0.2,0.7,1) == 0.9); // 输出:bool(true)
浮点数取整
在《PHP 取整函数 ceil 与 floor》一文中,曾有例子:
代码如下:
?php
echo ceil(2.1/0.7); // 输出:4
?
经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的:
代码如下:
?php
printf("%0.20f", (2.1/0.7)); // 输出:3.00000000000000044409
?
经过上面对浮点数计算的探讨,知道这是浮点数计算结果不完全精确造成的,因此使用 round() 函数处理一下即可:
代码如下:
?php
echo ceil( round((2.1/0.7),1) );
?
虽然 round() 函数是按照指定的精度进行四舍五入,但保留小数点后一位,对我们的取整结果是没影响的。
php取整的几种方式
具体代码如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
floor函数和ceil函数互相搭配起来可以使php
处理的数据更加真实可靠。
一、先来看floor函数:
语法:
float
floor
(
float
value
)
说明:
返回不大于
value
的下一个整数,将
value
的小数部分舍去取整。floor()
返回的类型仍然是
float,因为
float
值的范围通常比
integer
要大。
floor()
例子
1
?php
echo
floor(1.6);
//
will
output
"1"
echo
floor(-1.6);
//
will
output
"-2"
?
floor()
例子
2
?php
echo(floor(0.60));
echo(floor(0.40));
echo(floor(5));
echo(floor(5.1));
echo(floor(-5.1));
echo(floor(-5.9))
?
输出:
5
5
-6
-6
二、ceil函数:
语法:
float
ceil
(
float
value
)
说明:
返回不小于
value
的下一个整数,value
如果有小数部分则进一位。ceil()
返回的类型仍然是
float,因为
float
值的范围通常比
integer
要大。
ceil()
例子:
?php
echo
ceil(4.3);
//
5
echo
ceil(9.999);
//
10
echo
ceil(-3.14);
//
-3
?
看到这两个函数的区别了么。。
在分页时我们会常用到的
//页码计算:
$lastpg=ceil($totle/$displaypg);
//最后页,也是总页数,用ceil就方便多了。
$lastpg=$lastpg
?
$lastpg
:
1;
//没有显示条目,置最后页为1
$page=min($lastpg,$page);
$prepg=$page-1;
//上一页
$nextpg=($page==$lastpg
?
:
$page+1);
//下一页
$firstcount=($page-1)*$displaypg;
当然,如果需要制定精度就需要使用round函数了。
三、round函数:
语法:
float
round
(
float
val
[,
int
precision]
)
说明:
返回将
val
根据指定精度
precision(十进制小数点后数字的数目)进行四舍五入的结果。precision
也可以是负数或零(默认值)。
round()
例子
?php
echo
round(3.4);
//
3
echo
round(3.5);
//
4
echo
round(3.6);
//
4
echo
round(3.6,
0);
//
4
echo
round(1.95583,
2);
//
1.96
echo
round(1241757,
-3);
//
1242000
echo
round(5.045,
2);
//
5.05
echo
round(5.055,
2);
//
5.06
?
四、intval—对变数转成整数型态
变量转成整数类型。
语法:
int
intval(mixed
var,
int
[base]);
返回值:
整数
函数种类:
PHP
系统功能
内容说明
本函数可将变量转成整数类型。可省略的参数
base
是转换的基底,默认值为
10。转换的变量
var
可以为数组或类之外的任何类型变量。
例子intval()
?php
echo
intval(4.3);
//4
echo
intval(4.6);
//
4
?
注:intval如果是字符型的会自动转换为0
如
intval('abc');
输出结果
如果是
intval('5fd');
输出结果是
5