PHP 文档说明了该ceil()函数的以下内容:
返回值
value向上舍入到下一个最高整数。的返回值ceil()仍然是 float 类型,因为 float 的值范围通常大于 integer 的值范围。
floor()还返回一个浮点数作为返回值。但是,我不知道为什么。为什么非十进制返回值需要比整数更大的范围?
在您引用的引用中是这样说的:因为浮点数的值范围通常大于整数的值范围。如果您返回 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)才可以。
(这个答案是在问题提出很久之后才综合出来的,目的是提供问题的实际答案,而不是只留下一些评论)