2017-06-29 63 views
-2

我有這個值:833333333333333.33325 ,需要圍捕與2位小數(應該是833333333333333.34)Math.Round圓始終保持十進制值

如果我使用MidpointRounding.ToEven或AwayFromZero,我總是得到833333333333333.33 。 如何使用C#中的Math獲得833333333333333.34?

的代碼是:

decimal valorArredondado = Math.Round(valorParcelado, MidpointRounding.AwayFromZero); 

哪裏valorParcelado是833333333333333.33325安迪需要十進制值回報。

+2

您沒有幫助我們。如果你可以發佈你的代碼會更好 – Rekcs

+6

爲什麼應該是833333333333333.34?這在數學上是不正確的。 – user3185569

+5

[在C#中四捨五入到2位小數]的可能重複(https://stackoverflow.com/questions/7075201/rounding-up-to-2-decimal-places-in-c-sharp) – Liam

回答

2

你可以這樣做:

decimal r = Math.Ceiling(d * 100m)/100.0m; 

例如:

decimal d = 833333333333333.33325m; 
decimal r = Math.Ceiling(d * 100m)/100.0m; 

Console.WriteLine(d); // 833333333333333.33325 
Console.WriteLine(r); // 833333333333333.34 
+0

你好!感謝您的幫助,並對不好的問題抱歉:/ –

+0

@Jokesonme我個人認爲這不是一個壞問題,我只是想知道爲什麼你需要做非標準舍入。 :) –

+0

@MatthewWatson:看到我上面的評論爲我的非標準四捨五入的理由。 – PaulF