我正在嘗試使用C#將數字舍入到下一個數字。例如:如何將數字四捨五入到小數點後兩位
0.409 -> 0.41
0.401 -> 0.41
0.414 -> 0.42
0.499 -> 0.50
0.433 -> 0.44
有沒有辦法使用.NET內置函數來做到這一點?
我正在嘗試使用C#將數字舍入到下一個數字。例如:如何將數字四捨五入到小數點後兩位
0.409 -> 0.41
0.401 -> 0.41
0.414 -> 0.42
0.499 -> 0.50
0.433 -> 0.44
有沒有辦法使用.NET內置函數來做到這一點?
Math.Ceiling
可以使用。
Math.Ceiling
四捨五入爲最接近的整數的,所以我建議你做一些師/乘法也:
var notRounded = 0.409;
var rounded = Math.Ceiling(notRounded * 100)/100;
說明:notRounded
* 100爲您提供了40.9。 Math.Ceiling
將返回,所以再次將其重新分爲'還原'回原始小數形式:0.41。
感謝您的編輯,錯過了那一個。 – 2014-11-03 13:46:06
確保使用'decimal'而不是'double',因爲'double'是一個浮點數據類型。 – 2014-11-03 13:49:50
它的工作,但它可以用來四捨五入到小數點後1位嗎?例如:0.401到0.5而不是0.41。 – user2506496 2014-11-03 13:50:14
一種方法是Math.Ceiling
作爲already described。
另一種方法是計算餘,並添加區別圍捕:
decimal r = 0.409M;
decimal d = r % .01M > 0 ? (r + .01M - r % .01M) : r;
它也很好。謝謝。 – user2506496 2014-11-03 13:54:22
*我試圖圍捕號碼使用C#*證明這一點[問] – Plutonix 2014-11-03 13:32:33
@LuisFilipe:我不知道他會因爲他不想傳統的四捨五入... – Chris 2014-11-03 13:34:14
@LuisFilipe這將0.401到0.41? – Reniuz 2014-11-03 13:38:05