2014-03-31 37 views
1

我認爲下面的代碼應該將字符串格式化爲四位小數。 (這樣做的目的是3.59的數值,加上尾隨零因此字符串值變爲3.5900)格式字符串值精度不起作用

string PreFC = string.Format(dr.Cells["Price"].Value.ToString(),"{0:n4}"); 
         // PreFC = (dr.Cells["Price"].Value.ToString()); 

         StringBuilder FC = new StringBuilder(PreFC); 
         MessageBox.Show(PreFC); 

這是行不通的。它給我的價值是3.59而不是3.5900。我究竟做錯了什麼?

+1

注意:'.ToString()'已經將值轉換爲字符串,因此不再有可用的格式。 – ja72

+0

這實際上是有道理的。謝謝@ ja72! – CryptoJones

回答

2

你有錯位的格式和值應該是:

string PreFC = string.Format("{0:n4}", dr.Cells["Price"].Value); 
          //Format should be first 

不要叫ToString在值上,您將不會獲得數字格式來處理字符串值。因爲string.Format接受object類型參數

+1

爲什麼投射或轉換? String.Format需要對象參數。 – Joe

+0

@Joe,確實很好。 – Habib

+0

嘗試第一行時,我收到了無效的轉換異常。 第二個完美的工作!非常感謝你! – CryptoJones

2

Standard Numeric Format Strings

對於 「精度限定符」 使用 「F」

string PreFC = ((double)dr.Cells["Price"].Value).ToString("f"); 
+2

一些評論來解釋你所做的事情會很好。 – Liam

+2

您需要將參數的順序更改爲'string.Format()'。 – ja72

+1

@lomed,不是「對象」類型的「值」,並且僅支持無參數的'ToString()'? – dkozl

相關問題