PHP ceil() 和 floor() 返回浮点数?
PHP ceil() and floor() returning 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()
也是 return 作为 return 值的浮点数。但是,我不明白为什么。为什么非十进制 return 值需要比整数更大的范围?
你引用的那句话是这么说的:因为float的取值范围通常比integer大。如果您 return 一个 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 中,因为这个数字太大了适合四字节整数。
对于太大而无法放入八字节整数(长整型)的数字也是如此。
如果我没记错的话,double(八字节浮点数)的范围是 10^-308 到 10^+308,比好长。
如果您想对一个粗略值为 10^100 的数字进行上限或下限,则无法将其放入 int 或 long 中,因此只能使用 float(或 double)。
(这个答案是在问题被提出后很久才合成的,以提供问题的实际答案,而不是只留下一些评论)
PHP 文档为 ceil()
函数声明了以下内容:
Return Values
value
rounded up to the next highest integer. The return value ofceil()
is still of type float as the value range of float is usually bigger than that of integer.
floor()
也是 return 作为 return 值的浮点数。但是,我不明白为什么。为什么非十进制 return 值需要比整数更大的范围?
你引用的那句话是这么说的:因为float的取值范围通常比integer大。如果您 return 一个 int(或 long),您的原始值很可能超出了可能由所述 int 或 long 表示的数字范围。
后续问答:
What do you mean by "your original value falls outside the range of numbers"? I mean, the purpose of
ceil()
andfloor()
is to round up and down numbers to a whole number (integer) after all?(Audite Marlow Apr 6 '16 at 15:19)
是的,但是如果你有一个大于 40 亿的无符号数或者大于它的一半的有符号数,它不能包含在一个 int 中,因为这个数字太大了适合四字节整数。
对于太大而无法放入八字节整数(长整型)的数字也是如此。
如果我没记错的话,double(八字节浮点数)的范围是 10^-308 到 10^+308,比好长。
如果您想对一个粗略值为 10^100 的数字进行上限或下限,则无法将其放入 int 或 long 中,因此只能使用 float(或 double)。
(这个答案是在问题被提出后很久才合成的,以提供问题的实际答案,而不是只留下一些评论)