我需要从小数或双精度得到左侧整数值.对于Ex:我需要从4.6获得值4.我尝试使用Math.Floor函数,但它返回一个double值,例如:它从4.6返回4.0.MSDN文档说它返回一个整数值.我在这里错过了什么吗?或者有不同的方式来实现我正在寻找的东西?
Jon*_*eet 135
的范围double
比的范围宽得多的int
或long
.考虑以下代码:
double d = 100000000000000000000d;
long x = Math.Floor(d); // Invalid in reality
Run Code Online (Sandbox Code Playgroud)
整数超出范围long
- 所以你期望发生什么?
通常,您知道该值实际上在int
或的范围内long
,因此您将其强制转换:
double d = 1000.1234d;
int x = (int) Math.Floor(d);
Run Code Online (Sandbox Code Playgroud)
但是演员的责任在于开发者,而不是他Math.Floor
自己.如果它失败并且除了范围之外的所有值都有例外,那将是不必要的限制long
.
Nei*_*l N 11
根据MSDN,Math.Floor(double)返回一个双:http://msdn.microsoft.com/en-us/library/e0b5f0xb.aspx
如果你想把它作为一个int:
int result = (int)Math.Floor(yourVariable);
Run Code Online (Sandbox Code Playgroud)
我可以看到MSDN文章如何误导,他们应该指定,虽然结果是一个"整数"(在这种情况下意味着整数),它仍然是TYPE Double
归档时间: |
|
查看次数: |
40032 次 |
最近记录: |