2013-10-11 75 views
0

你好傢伙我創建計算器,我想這些值轉換爲浮動 字符串NUM =「2 + 6 + 8 + 9」; 所以他們會自動添加並給出共25個? 有沒有辦法做到這一點?如何將字符串轉換爲浮動在C#

對不起我的英文不好

+0

'反正是有做到這一點'是的,你應該寫一些代碼? –

+0

'float string'?你想結束'num = 25','25'? '25.0'? –

+0

你需要使用jQuery。明顯。 – blowdart

回答

6

使用DataTable.Compute ;-)

DataTable table = new DataTable(); 
int i = (int) table.Compute("2+6+8+9", null); // 25 

對於所有的規則和運營商的支持:DataColumn.Expression

如果你不知道結果的類型總是使用浮點型和System.Convert.ToDouble它接受一切的IConvertible,例如:

double d1 = System.Convert.ToDouble(table.Compute("2+6+8+9", null)); // 25.0 
double d2 = System.Convert.ToDouble(table.Compute("2+6+8+9/2", null)); // 20.5 
+2

這是超級酷 - 我完全不知道存在。我會假設你需要一個第三方表達式評估者,或者寫你自己的。很高興知道! – neminem

+0

這對我的工具箱來說非常棒。 – Bit

+0

真棒這就是我想要的東西:) 感謝 –

2

您正在尋找表達式評估器。有很多可用的。例如:http://csharpeval.codeplex.com/

+0

這是一個答案或評論? – I4V

+0

@ I4V這是一個答案。你認爲這應該是一個評論? –

+0

@DavidHeffernan我認爲,在SO上4年的經驗足以知道只有鏈接的答案不受歡迎。 –

1

中爲主體問的問題是直線前進。您可以將字符串轉換爲浮動是這樣的:

double f = double.Parse("2.5"); 

但是,如果你想爲你的問題,這需要更多的工作描述來處理任意表達式。幸運的是,其他人已經完成了這項工作。我寫了自己的表達式求值器,你可以在我的文章A C# Expression Evaluator中看到它。除了支持問題中的示例表達式外,它還支持變量和函數。

-1

這可能會得到你想要的東西:

string[] inputArray = Regex.Split(num, @"\D+"); 
    float results = 0; 

    foreach (var item in inputArray) 
    { 
     results += float.Parse(item); 
    } 
+0

如果表達式包含「+」以外的運算符,該怎麼辦? –

+0

不管每個數字都會在數組中被拆分出來,無論是將它們分開的+ =正數。 – Bit

+1

不,@LB問你在以「7 * 6」爲例時會發生什麼,例如 –