我正在开发一个Windows窗体应用程序。我需要进行一些转换并对值进行舍入。我需要将double值四舍五入到最接近的整数。例如,1.4应该是1,1.6应该是2后应用于舍入请参考下面的代码。
double d = 51386933935386.5;
uint x = (uint)Math.Round(d, 0, MidpointRounding.AwayFromZero);
总结后我需要值= 51386933935386.但我得到一些不同的价值。
答案 0 :(得分:4)
UInt
的{{3}}为4,294,967,295。
您需要保持double
或long
编辑:或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);