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)