2014-11-03 119 views
-1

我正在嘗試使用C#將數字舍入到下一個數字。例如:如何將數字四捨五入到小數點後兩位

0.409 -> 0.41 
0.401 -> 0.41 
0.414 -> 0.42 
0.499 -> 0.50 
0.433 -> 0.44 

有沒有辦法使用.NET內置函數來做到這一點?

+2

*我試圖圍捕號碼使用C#*證明這一點[問] – Plutonix 2014-11-03 13:32:33

+0

@LuisFilipe:我不知道他會因爲他不想傳統的四捨五入... – Chris 2014-11-03 13:34:14

+0

@LuisFilipe這將0.401到0.41? – Reniuz 2014-11-03 13:38:05

回答

5

Math.Ceiling可以使用。

Math.Ceiling四捨五入爲最接近的整數的,所以我建議你做一些師/乘法也:

var notRounded = 0.409; 
var rounded = Math.Ceiling(notRounded * 100)/100; 

說明:notRounded * 100爲您提供了40.9Math.Ceiling將返回,所以再次將其重新分爲'還原'回原始小數形式:0.41

+0

感謝您的編輯,錯過了那一個。 – 2014-11-03 13:46:06

+0

確保使用'decimal'而不是'double',因爲'double'是一個浮點數據類型。 – 2014-11-03 13:49:50

+0

它的工作,但它可以用來四捨五入到小數點後1位嗎?例如:0.401到0.5而不是0.41。 – user2506496 2014-11-03 13:50:14

1

一種方法是Math.Ceiling作爲already described

另一種方法是計算餘,並添加區別圍捕:

decimal r = 0.409M; 
decimal d = r % .01M > 0 ? (r + .01M - r % .01M) : r; 
+2

它也很好。謝謝。 – user2506496 2014-11-03 13:54:22

相關問題