您的位置:

ceil函数php,ceil函数和floor函数的用法

本文目录一览:

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