msdn定义了这个方法:返回大于或等于指定双精度浮点数的最小整数。
但事实上,它是
public static double Ceiling (
double a
)
为什么不直接返回int?微软是怎么想的?
msdn定义了这个方法:返回大于或等于指定双精度浮点数的最小整数。
但事实上,它是
public static double Ceiling (
double a
)
为什么不直接返回int?微软是怎么想的?
这是因为 a 的范围double
(±5.0 × 10 -324到 ±1.7 × 10 308)远大于 a 的范围int
(-2,147,483,648 到 2,147,483,647)。如果返回类型有int
很多可能的输入将失败。例如Math.Ceiling
,可能被迫OverflowException
在已检查的上下文中抛出一个,或者它甚至可能在未检查的上下文中返回不正确的结果。这是不受欢迎的行为。
此方法还可以返回一些特殊值,例如NaN
和。PositiveInfinity
这只有在返回类型为 时才有可能double
。
如果您认为结果适合 int,则可以添加显式强制转换:
int result = (int)Math.Ceiling(a);