簡體   English   中英

如何在C#中將雙精度值四舍五入為最接近的整數

[英]how to round up a double value to nearest integer in c#

我正在開發Windows窗體應用程序,我需要進行一些轉換並將值四舍五入。我需要將double值四舍五入為最接近的整數。例如,應用四舍五入后1.4應該為1,1.6應該為2.請參考我的代碼如下。

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

舍入后,我需要值=51386933935386。但是我得到了一些不同的值。

UInt最大值是4,294,967,295。

您需要將其保持doublelong

編輯:或ulong如果你想保持它未簽名

51386933935386比uint最大值長。 使用下一個:

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

為什么不使用`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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM