为什么C#Math.Floor()返回Double而不是Int

时间:2010-11-09 05:09:19

标签: c#

  

可能重复:
  Why does Math.Floor(Double) return a value of type Double?

为什么C#Math.Floor()会返回double而不是int

来自MSDN文档:

  

返回小于或等于指定的双精度浮点数的最大 整数

它说它返回一个整数。可以返回double,我可以随时将其转换为int,但它很奇怪,不是吗?

2 个答案:

答案 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 也必须是双精度数,否则许多潜在输出将不适合输出变量。

在数学术语中,函数的范围必须具有相同的大小。