可能是重复问题:
为什么Math.Floor(Double)返回Double类型的值?
C#中的Math.Floor()
为什么返回double
而不是int
?
从MSDN文档中可以看到:
返回指定双精度浮点数小于或等于其的最大整数
它说它返回一个整数。虽然将其返回double
,但我总是可以将其转换为int
,但这很奇怪,不是吗?
可能是重复问题:
为什么Math.Floor(Double)返回Double类型的值?
C#中的Math.Floor()
为什么返回double
而不是int
?
从MSDN文档中可以看到:
返回指定双精度浮点数小于或等于其的最大整数
它说它返回一个整数。虽然将其返回double
,但我总是可以将其转换为int
,但这很奇怪,不是吗?
考虑到 double
的范围可以比 int
更大,因此并非如此。您不希望使用一个 double 类型的大值导致 int 类型发生溢出。
我来举个例子:
Double.MaxValue = 1.7976931348623157E+308
Integer.MaxValue = 2,147,483,647
因此,您可能有一个 double 值是 3,000,000,000.50,然后将它向下取整,这将导致 int 的最大值溢出。
由于输入是一个double类型,输出也必须是double类型,否则许多潜在的输出将无法适应输出变量。
从数学角度来看,该函数的定义域和值域必须具有相同的大小。