2012-09-26 3 views
0

단추가 문자를 텍스트 상자로 보내는 계산기를 프로그래밍하려고합니다. 사용자가 "같음"버튼을 누르면 전체 문자열을 계산해야하며 그 답은 십진수로 표시되어야합니다. 분명히 다음과 같이 작동하지 않습니다 :문자열 계산을 십진수로 변환

private void btn_enter_Click(object sender, EventArgs e) 
    { 
     decimal answer; 
     answer = Convert.ToDecimal(textBox1.Text); 

     textBox1.Text += "=" + answer; 
    } 

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+1

전체 문자열은 무엇을 계산해야합니까? 문자열의 내용은 무엇입니까? 샘플 제공 가능 – V4Vendetta

+0

구체적으로 작동하지 않는 것은 무엇입니까? 변환, 출력 텍스트? 텍스트 상자에 무엇을 입력하나요? – Steve

+0

textBox1.Text는 하나의 값 (예 : '100')입니까? 아니면 전체 계산 (예 : '100 + 4 * 12')일까요? 그 후자의 경우, 먼저 각 계산을 수행하기 위해 문자열을 구문 분석해야합니다. 또는 아마도 이전에 입력을 먼저 가져 오는 것이 좋습니다. 사용자가 '100'을 입력하고 '+'를 클릭하면 '100'을 가져 와서 10 진수로 변환하고 추가가 저장 될 것입니다. – HaemEternal

답변

-1

당신은 evaluating C# on the fly의 라인을 따라 갈 수 있지만, 당신이 뭘하려는 건지, 그것은 조금 잔인한입니다.

(get on NuGet)과 같은 계산 엔진을 권하고 싶습니다. 당신이 EvaluateTextBox 다음 파이프에서 텍스트로 호출의 결과를 Expression 클래스의 생성자를 대체 할 수

Expression e = new Expression("2 + 3 * 5"); 
Debug.Assert(17 == e.Evaluate()); 

: 그것으로, 당신은 쉽게합니다 (NCalc 홈페이지에서 촬영)과 같은 작업을 수행 할 수 있습니다 출력하고자하는 위치 :

Expression e = new Expression(textBox1.Text); 
MessageBox.Show(e.Evaluate().ToString()); 
+0

이것은 효과가 있습니다. 무리 감사! –

0

질문은 분명하지 않지만. 하지만 텍스트 상자에 표시하려면 문자열로 변환해야합니다.

private void btn_enter_Click(object sender, EventArgs e) 
{ 
    decimal answer; 
    answer = Convert.ToDecimal(textBox1.Text); 

    textBox1.Text += "=" + answer.toString(); 
} 
관련 문제