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

时间:2016-04-05 11:24:51

标签: php floor ceil

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

  

返回值

     

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

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

1 个答案:

答案 0 :(得分:3)

它在引用中引用如此:因为float的值范围通常大于整数的值。如果你返回一个int(或long),很可能你的原始值超出了可能由所述int或long表示的数字范围。

后续问题&回答:

  

你是什么意思"你的原始值超出数字范围"?我的意思是,ceil()floor()的目的是将数字向上和向下舍入到整数(整数)?

     

(Audite Marlow 4月6日和16日15:19)

是的,但是如果你有一个高于40亿的无符号数和一个大于一半的有符号数,它就不能包含在int中,因为这个数字太大而不适合里面一个四字节的整数。

对于太大而不适合8字节整数(长整数)的数字也一样。

如果我没有弄错的话,double(这是一个8字节的浮点数)的范围是10 ^ -308到10 ^ + 308,这比可能的值范围宽得多。很久了。

如果你想要一个粗略值为10 ^ 100的数字,或者你需要将它放在一个int或long中,那么只有一个浮点数(或双精度数)。

(这个答案在提出问题后很久就已经合成,提供问题的实际答案,而不是仅仅留下几条评论就开放了)