Sle*_*ght 21 .net c# frameworks base-class-library
msdn定义了此方法:返回大于或等于指定的双精度浮点数的最小整数.
但事实上,确实如此
public static double Ceiling (
double a
)
Run Code Online (Sandbox Code Playgroud)
为什么不直接返回int?微软怎么想?
Mar*_*ers 46
这是因为a double
(±5.0×10 -324到±1.7×10 308)的范围远远大于int
(-2,147,483,648到2,147,483,647)的范围.如果返回类型int
很多可能的输入将失败.例如,Math.Ceiling
可能被强制OverflowException
在已检查的上下文中抛出,或者甚至可能在未经检查的上下文中返回不正确的结果.这是不受欢迎的行为.
此方法还可以返回一些特殊值,例如NaN
和PositiveInfinity
.只有返回类型是这样才可能double
.
如果您认为结果适合int,则可以添加显式强制转换:
int result = (int)Math.Ceiling(a);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4429 次 |
最近记录: |