我怎样才能将double转换为最接近的整数值?
如何将double转换为最接近的int?
使用Math.round() ,可能与MidpointRounding.AwayFromZero一起使用 
例如:
 Math.Round(1.2) ==> 1 Math.Round(1.5) ==> 2 Math.Round(2.5) ==> 2 Math.Round(2.5, MidpointRounding.AwayFromZero) ==> 3 
 double d = 1.234; int i = Convert.ToInt32(d); 
参考
手柄圆滑如此:
四舍五入到最接近的32位有符号整数。 如果值在两个整数之间,则返回偶数; 也就是4.5被转换为4,5.5被转换为6。
你也可以使用function:
 //Works with negative numbers now static int MyRound(double d) { if (d < 0) { return (int)(d - 0.5); } return (int)(d + 0.5); } 
根据架构,它要快几倍。
 double d; int rounded = (int)Math.Round(d); 
我知道这个问题很老,但我在寻找类似问题的答案时遇到了这个问题。 我想我会分享给我的非常有用的小费。
转换为int时,只需在向下转换之前将.5添加到您的值。 由于向下转换为int总是下降到较低的数字(例如(int)1.7 = 1),如果您的编号是.5或更高,则添加.5会将其提升到下一个编号,并且向下转换为int应该返回正确的值。 (例如(int)(1.8 + .5)= 2)
我希望这个答案对任何人都有帮助。
我正在开发一个运动一个Intbutton的科学计算器。 我发现以下是一个简单,可靠的解决scheme:
 double dblInteger; if( dblNumber < 0 ) dblInteger = Math.Ceiling(dblNumber); else dblInteger = Math.Floor(dblNumber); 
Math.Round有时会产生意想不到的结果,并且显式转换为整数(通过cast或Convert.ToInt …)经常会为更高精度的数字生成错误的值。 上述方法似乎总是工作。