2012-04-21 65 views
4

小數我試圖格式化小數爲0:在C#中 0.0試過這個代碼格式沒有逗號

string nv = textBox7.Text.Trim().Replace(',', '.'); 

res = Convert.ToDecimal(nv, new CultureInfo("en-GB")); 

但資源總是顯示結果與一個逗號,與

new CultureInfo("en-GB") 
也嘗試

但問題仍然存在 並提前致謝。

+0

'res'是一個'decimal',而不是一個字符串。所以它不能有格式。 – CodesInChaos 2012-04-21 10:51:02

+2

「0:0.0」甚至意味着什麼「小數」? ':'的含義是什麼? – Oded 2012-04-21 10:51:58

+1

@Oded我猜它代表'string.Format'中的第0個參數。 – CodesInChaos 2012-04-21 10:54:45

回答

1

resdecimal,而不是一個字符串。所以它不能有格式。小數是沒有關聯格式的純數學數字。僅當您將decimal轉換爲string時,格式纔會生效。

您可以使用res.ToString(CultureInfo.InvariantCulture)生產使用.作爲小數點分隔字符串。

+0

我想要一個小數將其插入我的數據庫中, – tarek 2012-04-21 11:10:22

+0

@user您的問題在哪裏? – CodesInChaos 2012-04-21 11:18:24

+0

問題解決了,我以爲我應該使用一個十進制變量來使用它一個sqlCommand指令,而且一個字符串可以使相同的想法,我用字符串nv = textBox7.Text.Trim()。Replace(',' ,'。'); – tarek 2012-04-21 11:22:51

10

正如其他評論和答案所示,您首先需要了解一些基本知識。我可能會說一些事情你已經知道了,但包涵:

  1. textBox7.Text包含string,而不是一個decimal
  2. 如果你想爲計算一個decimal,你必須把它轉換(我想你已經走到這一步)
  3. 由於res是一個小數,只要你想看看它的價值的東西將其轉換爲string。無論你是將它寫入Console還是將鼠標懸停在調試器上。該轉換將使用您當前的區域設置。 這個是爲什麼你總是看到一個逗號。
  4. 要顯示給別人或寫在你想要的格式的某個地方,你必須指定格式或CultureInfo。

a)Standard Format。例如:
Console.WriteLine(res.toString("F2"));
這將逗號之後格式化123456與2號:123456.00

b)中Custom Format。例如:
Console.WriteLine(res.toString("[##-##-##]"));
這將輸出123456爲類似[12-34-56]

c)中CultureInfo。例如:
Console.WriteLine(res.ToString(CultureInfo.CreateSpecificCulture("nl-BE")));
這將輸出1234.56像在比利時:用逗號1234,56

順便提及,我認爲烯GB還輸出到一個逗號:-)

d)Combine。發瘋!兩個都做!示例:
Console.WriteLine(res.ToString("F2", CultureInfo.CreateSpecificCulture("nl-BE")));
格式123456至123456,00!