2010-05-19 45 views

回答

7

Math.Round是你在找什麼。如果你是.NET新手,你還應該查找AwayFromZeroToEven之間的difference四捨五入。 ToEven的默認設置有時可能讓人感到意外。

dim result = Math.Round(2.56666666, 2) 
+0

ah..yeahh ... THX – leonita 2010-05-19 01:32:22

1

Math.Round(),正如其他人所建議的,可能是你想要的。但是,你的問題的文本具體問了如何「綜合」[原文如此]。如果你總是需要圍捕,實際值的regarless(即:2.561111仍然會去2.57),你可以這樣做:

Math.Ceiling(d * 100)/100D 
11

如果你想經常四捨五入,你可以只使用Math.Round方法。如果您specifially要舍向上,使用Math.Ceiling方法:

Dim d As Decimal = 2.566666 
Dim r As Decimal = Math.Ceiling(d * 100D)/100D 
-1

我不明白爲什麼人們推薦下面的不正確的代碼:

Dim r As Decimal = Math.Ceiling(d * 100D)/100D 

正確的代碼圍捕應該像這樣的:

Dim r As Double = Math.Ceiling(d) 
  1. Math.Ceiling可與數據類型double(不是十進制)。
  2. * 100D/100D不正確將打破更大數字的結果。
  3. Math.Ceiling文檔可以在這裏找到:http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx
+1

Math.Ceiling有兩個重載;一個用於十進制,一個用於雙精度。 – 2014-01-05 02:44:10

+0

我不知道的唯一的一點是不是你做的第二點。也許你可以提供和例子?你做的其他2點(1和3)是不正確的。這是最高級別的math.ceiling文檔,它將顯示2個重載:http://msdn.microsoft.com/en-us/library/System.Math.Ceiling(v=vs.110).aspx – 2014-11-05 15:48:25

+0

While Math.Ceiling可以採用小數或雙精度,它總是返回_「返回最小的積分」_(來自您鏈接的文檔)。 OP特別要求四捨五入到小數點後兩位。所以他們想要一個小數/雙回,而不是一個整數。所以Math.Ceiling不會自行工作 – Adam 2017-08-08 20:15:14

0

的基本功能圍捕是Math.Ceiling(d),但提問者特別需要的第二個小數點後圍捕。這將是Math.Ceiling(d * 100)/ 100。例如,它可以將46.5671乘以100得到4656.71,然後向上舍入得到4657,然後除以100將小數點後移2得到46.57。

9

這是我如何做到這一點:

Private Function RoundUp(value As Double, decimals As Integer) As Double 

    Return Math.Ceiling(value * (10^decimals))/(10^decimals) 

End Function 
1

我這樣使用:

Math.Round(d + 0.49D, 2)