如何在c#中将double值舍入到最接近的整数

时间:2016-02-09 07:09:17

标签: c#

我正在开发一个Windows窗体应用程序。我需要进行一些转换并对值进行舍入。我需要将double值四舍五入到最接近的整数。例如,1.4应该是1,1.6应该是2后应用于舍入请参考下面的代码。

double d = 51386933935386.5;
uint x = (uint)Math.Round(d, 0, MidpointRounding.AwayFromZero);
  

总结后我需要值= 51386933935386.但我得到一些不同的价值。

3 个答案:

答案 0 :(得分:4)

UInt的{​​{3}}为4,294,967,295。

您需要保持doublelong

编辑:或ulong如果你想保持未签名

答案 1 :(得分:1)

51386933935386超过uint最大值。使用下一个:

double d = 51386933935386.5;
long x = (long)Math.Round(d, 0, MidpointRounding.AwayFromZero);

答案 2 :(得分:-1)

为什么不使用`Math.Floor(d);' ?

double d = 51386933935386.5;
var result = Math.Floor(d);
// result = 51386933935386

它会返回您需要的号码。

<强>更新

感谢@HimBromBeere指出,您可以使用下面的代码完成任务。

使用此代码

double d = 51386933935386.5;
var x = Math.Round(d, 0, MidpointRounding.AwayFromZero);
var result = Convert.ToInt64(x);