PHP ceil()和floor()返回float?

PHP文档对ceil()函数声明以下内容:

Return Values

value rounded up to the next highest integer. The return value of ceil() is still of type float as the value range of float is usually bigger than that of integer.

floor()还返回一个float作为返回值.但是,对于我来说,这没有任何意义.为什么非十进制返回值需要的范围大于整数?

解决方法:

它在引号中说是这样:因为float的值范围通常大于整数的值范围.如果您返回一个int(或long),则您的原始值很可能落在该int或long可能表示的数字范围之外.

后续问题回答:

What do you mean by “your original value falls outside the range of numbers”? I mean, the purpose of ceil() and floor() is to round up and down numbers to a whole number (integer) after all?

(Audite Marlow Apr 6 ’16 at 15:19)

是的,但是如果您拥有的无符号数大于40亿,并且某物或带符号的数大于该数字的一半,则不能将其包含在int中,因为该数字太大而无法容纳在四字节整数.

对于太大而无法放入8字节整数(长整数)的数字,情况也是如此.

如果我没记错的话,则双精度数(这是一个8字节的浮点数)的范围是10 ^ -308到10 ^ 308,这比long的可能值范围大得多.

如果您希望将数字的上限或下限限制为10或100,则不能将其设置为int或long类型,因此只能使用浮点数(或double数).

(此问题在提出问题后很长时间便已合成,目的是提供问题的实际答案,而不是只留下一些评论而保持开放状态)

上一篇:1008 Elevator (20分)


下一篇:Python基础笔记一