2016-11-23 105 views
0

我試圖從文本框中讀取一個十進制數並將其轉換爲int來計算它。正則表達式十進制到int

該字符串看起來像這個+ 0.003_mm。 基於正則表達式的在線工具我的模式捕捉小數數字應該看起來像這樣「d *(\ d +。\ d +」和結果將是0.003

雖然測試這個即時試圖顯示在0.003文本框名爲「mtw_textbox」這就是爲什麼我最終將其轉換爲字符串。

我試過這種方式,也作爲「mittelwert1」的Int32,但我得到一個錯誤,說這是「詮釋mittelwert1 = Convert.ToInt32(mtw1.Value);」

我在做什麼錯

 private void button1_Click_1(object sender, EventArgs e) 
    { 
     Regex regex = new Regex(@"d*(\d+\.\d+)"); 
     Match mtw1 = regex.Match(mw1_textbox.Text); 

     if (mtw1.Success) { 
     Int mittelwert1 = Convert.ToInt32(mtw1.Value); 
     string testen = mittelwert1.ToString(); 
+0

「0.003」不是一個整數(但小數,float或double) –

回答

2

將「0.003」轉換爲整數將正好引發此異常。這是因爲0.003不是一個整數。嘗試轉換爲任何浮點數,就像浮動,雙精度或十進制:

double mittelwert1 = Convert.ToDouble(mtw1.Value); 
+0

Whops感謝現在正在努力,這是有點傻從我。沒想到在哈哈 – mama

+0

嗯那個問題現在已經解決了,但它還不是正確的。我沒有得到逗號。例如,在0.003上,它只顯示了我的3. 在1,03這個數字上表示103.測試網站向我顯示了帶有標題的逗號,所以應該是正確的?轉換過程中逗號會丟失嗎? – mama

+0

您可能有本地化問題 - 嘗試添加當前文化= invariant文化參數轉換(在某些文化中,小數點分隔符不是點)。如果它沒有幫助,隨時發佈它作爲另一個問題,所以:) –