PHP ceil() 和 floor() 返回浮点数?

Aud*_*low 5 php floor ceil

PHP 文档说明了该ceil()函数的以下内容:

返回值

value向上舍入到下一个最高整数。的返回值ceil()仍然是 float 类型,因为 float 的值范围通常大于 integer 的值范围。

floor()还返回一个浮点数作为返回值。但是,我不知道为什么。为什么非十进制返回值需要比整数更大的范围?

kla*_*aar 5

在您引用的引用中是这样说的:因为浮点数的值范围通常大于整数的值范围。如果您返回 int (或 long),则您的原始值很可能超出了所述 int 或 long 可以表示的数字范围。

后续问题及解答:

“你的原始值超出了数字范围”是什么意思?ceil()我的意思是, and的目的floor()毕竟是将数字向上和向下舍入为整数(整数)?

(审计马洛 2016 年 4 月 6 日 15:19)

是的,但是如果你有一个大于 40 亿的无符号数,以及大于 40 亿的东西或有符号数,则它不能包含在 int 中,因为该数太大而无法放入 4-字节整数。

对于太大而无法放入八字节整数(长整型)的数字也是如此。

如果我没记错的话,double(这是一个八字节浮点数)的范围是 10^-308 到 10^+308,这比 long 的可能值范围要宽得多。

如果您想要对一个大约为 10^100 的数字进行上取或下取整,则无法将其放入 int 或 long 中,因此只有 float(或 double)才可以。

(这个答案是在问题提出很久之后才综合出来的,目的是提供问题的实际答案,而不是只留下一些评论)