2011-01-19 187 views
0

正在嘗試將小數轉換爲一個字符串,我在過去已經完成了但由於某種原因它決定現在不工作。我真的無法解決這個問題,我已經在SQL Management Studio中將它設置爲十進制,並使用linq來實現它,但是出於一些人們不知道的奇怪原因,它認爲它需要一個日期時間。輸入字符串格式不正確(十進制字符串)

代碼:

protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       tblTest t = new tblTest(); 

       t.tDecimal = Convert.ToDecimal(tbxDecimal.ToString()); 

       t.Add(t); 
      } 
      catch (Exception ex) 
      { 
       System.Diagnostics.Debug.Write(ex.Message); 
      } 
     } 

有人可以幫助我在這裏?

+0

`tbxDecimal.ToString()`的值是什麼? – 2011-01-19 22:13:09

+0

tblTest的股份申報 – Restuta 2011-01-19 22:13:09

回答

5

首先Decimal.Parse將拋出一個異常,你應該總是使用System.Decimal.TryParse()代替Convert.ToDecimal()

其次,假設你正在使用某種形式的hungrian符號,並TBX手段「textbox」在你的符號中,你試圖轉換一個文本框,而不是文本框中的文本。

代替

tbxDecimal.ToString() 

你需要

tbxDecimal.Text.ToString() 

最後,你把一個斷點,找出你想真正轉換價值是什麼?它可能與你所期望的不同。

1

也許是因爲字符串使用的是點而不是昏迷,或者相反。

0

也許tbxDecimal.ToString()== string.Empty?如果字符串爲空

0

要擴大Fredrik的答案:是否有CultureInfo/Localization不匹配?

0

你爲什麼認爲它是日期時間?你能發佈實際的字符串嗎?

注意小數點分隔符 - '。' vs','