2010-02-08 69 views
5

可能重複:
c# - How do I round a decimal value to 2 decimal places (for output on a page)十進制小數點後的值最近爲0.01?

How to round decimal value up to nearest 0.05 value??,鏈接也是如此張貼討論了類似題目,但它不是輸出我的預期。

我需要十進制值轉換這樣

16.489-->16.49 
16.482-->16.48 
16.425-->16.43 
7.67 --> 7.67 (no conversion) 

我可以使用下面的C#方法的值

Math.Round(16.482*20)/20; 

但這種方法轉換不適合我的作品,它提供了以下結果

16.489-->16.5 
16.482-->16.5 
7.67 --> 7.7 
16.425-->16.45 

什麼是C#中的優雅方式來做到這一點。

回答

14

Math..::.Round Method (Decimal, Int32, MidpointRounding)

回合雙精度浮點值的小數位數的指定數目。一個參數指定如果在兩個其他數字中間的位置將值舍入。

Math.Round(1.489,2,MidpointRounding.AwayFromZero) 
+0

如果你想四捨五入到最接近的季度?所以1.489到1.5,而1.479到1.475? – Anthony 2010-02-08 05:57:29

+0

Math.Round(1.479,2,MidpointRounding.AwayFromZero)round to 1.48 – Fredou 2010-02-08 06:00:20

+0

@Fredou,它工作正常..謝謝... – RameshVel 2010-02-08 06:00:56

2

你嘗試

Math.Round(16.482*200)/200; 
+0

有沒有更乾淨的方法來做到這一點? – 2010-02-08 05:41:21

+0

我不知道,我不知道C#。我只知道示例代碼的工作原理。它只是將數字乘以您想要舍入的位置的倒數,然後將該和除以相同的倒數以返回相同的數字。你可以用同樣的想法四捨五入到最接近的四分之一(這是我學習這個技巧的方式)。 – Anthony 2010-02-08 05:43:49

+0

你可以創建一個函數來插入值和你想要的值,但是因爲SO似乎沒有意識到他想要取整爲.005,所以我不確定這會對你有幫助建議。 – Anthony 2010-02-08 05:45:30

相關問題