可能重复:
Why does Math.Floor(Double) return a value of type Double?
为什么C#Math.Floor()
会返回double
而不是int
来自MSDN文档:
返回小于或等于指定的双精度浮点数的最大 整数
它说它返回一个整数。可以返回double
,我可以随时将其转换为int
,但它很奇怪,不是吗?
答案 0 :(得分:39)
不是真的,考虑到double
可能比int
高得多。你不希望溢出一个带有double值的大值的int。
只是为了告诉你我的意思:
Double.MaxValue = 1.7976931348623157E + 308
Integer.MaxValue = 2,147,483,647
所以你可以得到一个3,000,000,000.50的双倍,并且它会超出int的最大值。
答案 1 :(得分:3)
由于 INPUT 是双精度数, OUTPUT 也必须是双精度数,否则许多潜在输出将不适合输出变量。
在数学术语中,函数的域和范围必须具有相同的大小。