2016-05-30 53 views
0

我讀一個字符串值,並嘗試通過此方法驗證和2位小數打印雙重價值

double value; 
if (!double.TryParse(sumValue, out value) || Math.Round(value, 2) != value) 
{ 
    MessageBox.Show("Not a double value"); 
} 

這工作得很好,以確認其價值的貨幣價值。這個問題,當我使用這個MessageBox.Show(Math.Round(value, 2))它沒有顯示在2位小數的值。我可以爲此做些什麼改變,並且是否使用正確的方法進行驗證?

+0

使用'double.ToString'如下所述:http://stackoverflow.com/questions/18418668/formatting-a-double-to-two-decimal-places – csharpfolk

+0

我沒有看到double.ToString?我看到像我一樣的方法 – user5313398

回答

2

如何輸出值取決於實際值。

雖然Math.Round(value, 2)會將值舍入爲小數點後兩位,如果該舍入值爲1.00或1.50(例如),默認情況下忽略尾隨零將顯示爲「1」或「1.5」。

如果要將值顯示爲2位小數,則有多種方法可以執行此操作。所有要求您調用string.Format或用格式參數明確呼叫.ToString

一種是使用:

MessageBox.Show(String.Format("{0:0.00}", value)); 

第一個「0」代表本身的數量和在「0.00」表示在格式化引擎,這是兩個小數的浮點數。您可以使用「#:##」代替。

Source

另一個是:

MessageBox.Show(value.ToString("F")); 

哪個是定點格式說明符。添加數字指定小數位數(2是默認值)。 Source

鑑於你說你的代碼「這工作正常」。那麼你的驗證步驟是正確的。您正在檢查該值是一個數字,並且四捨五入到小數點後兩位的值是您想要的值。沒有什麼需要你做的了。

+0

驗證過程如何正確執行? – user5313398

+0

你的方法是否有效?那麼最好選擇什麼? – user5313398

+0

@ user5313398哪一個你覺得最舒服的使用。在你忘記這個問題並重新訪問代碼的6個月時間裏,哪一個對你最有意義?挑一個。 – ChrisF

1

你可以嘗試使用.ToString()方法與自定義格式,例如:

value.ToString("#.##"); 
+0

驗證過程如何正確執行? – user5313398

+0

我試過這個方法sumValue.ToString(「#。##」);它仍然是爲什麼你呢? – user5313398

1

只需使用代碼

MessageBox.Show(Convert.ToString(Math.Round(價值2 )));