2013-10-11 29 views
1

我有一個格式問題與該行:Convert.ToDecimal(的String.Format( 「{0:##}」,doubleAmount))不喜歡0.0

Decimal amount = Convert.ToDecimal(String.Format("{0:.##}", doubleAmount)); 

如果doubleAmount是0.0,它會拋出一個格式異常。我如何處理0.0?

+1

使用'{0:0。##}'確保至少有一位數字。 –

+2

嘗試使用'{0:#。##}'來容納整數分量。 – sasfrog

+2

假設'doubleAmount'是一個double,爲什麼要將它轉換爲一個字符串,然後轉換爲'Decimal'而不是直接轉換爲'Decimal'? –

回答

6

問題是格式字符串{0:.##}將0格式化爲空字符串,但 空字符串不是Convert.ToDecimal的有效參數。爲避免出現可能的FormatException,可以使用{0:0.##}將0123作爲0格式化爲0。

(用戶sasfrog建議{0:#.##},但自認爲也能格式化0爲空字符串,這是行不通的。)

不過,如果你只是想爲double值四捨五入到小數點後兩位,並將結果存儲在一個十進制變量中,那麼您應該使用

Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero); 

並跳過字符串格式化和解析的不必要開銷。