2013-02-19 4 views
1

저는 C#을 처음 사용합니다. 저는 현재 계산기를 만들고 있으며, 간단한 계산을하고 싶지만 제대로 작동하지 않습니다. 1.1 + 1.1 + 1.1 = 33두 문자열을 1로 변환합니다.

+7

그래서 C#을 처음 접했고 확실히 C#처럼 보입니다. 왜 C++ 및 VBA 태그를 추가 했습니까? 그들은 당신의 질문과 아무 관련이 없습니다. 또한 귀하의 질문은 Windows와 관련이 없으므로 해당 태그도 유효하지 않습니다. 마지막으로, Visual Studio 대신 MonoDevelop를 사용할 때도 동일한 결과가 발생합니다. 잘못된 태그도 마찬가지입니다. C# 만 유효합니다. –

+0

[faq]와 [ask]를 두 번 읽어보십시오. –

+1

Convert.ToDouble은 현재 문화권을 사용합니다. 해당 문화권이 독일어 인 경우 '.'는 소수점이 아닌 그룹 구분 기호입니다. – CodesInChaos

답변

3

문제는 배양 지정되지 않는다는 것이다 : 여기

Convert.ToString(Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text)); 

모든 텍스트 상자 1.1 샘플 출력된다 : 여기

현재 라인 귀하의 전환에. 대부분 소수점이 아닌 그룹 구분 기호로 도트를 사용하는 독일 문화 (또는 다른 유럽 언어)가있을 가능성이 큽니다. 결과적으로 1.111으로 해석됩니다.

  1. 현재 문화에 번호를 입력 : 1,1 (선호)를
  2. 고정 문화권을 사용하여 숫자를 구문 분석 :

    는 두 가지 해결책이 있습니다

    Convert.ToString(
        Convert.ToDouble(A.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(B.Text, CultureInfo.InvariantCulture) + 
        Convert.ToDouble(C.Text, CultureInfo.InvariantCulture), 
        CultureInfo.InvariantCulture) 
    

사용자가 항상 자신의 문화권에있는 번호를 입력 할 수 있기 때문에 첫 번째 방법이 바람직합니다. 사용자에게 특정 문화를 강제하는 것은 20 년 전만해도 좋았지 만 요즘에는 불가능합니다.

+0

내 문화를 어떻게 바꿀 수 있습니까? 아니면 둘 다 받아 들일 수 있을까요? – cenh

+0

@ChristianEngelsborgNaumannH : 제 대답에 대한 업데이트를 참조하십시오. –

+0

@ChristianEngelsborgNaumannH : 동시에 둘을 수락하는 것은 불가능합니다. 사용자가 '1.001'을 입력했을 때 사용자가 무엇을 의미하는지 알 수 없습니다. '1001'(독일 문화로 해석되는 경우) 또는 '1.001' (불변 문화로 해석되는 경우) 일 수 있습니다. –

-1

합계를 계산 한 다음 부품을 함께 추가해야합니다. String.Format은 문자열을 연결하는 좋은 방법입니다.

double sum = Convert.ToDouble(A.Text)+Convert.ToDouble(B.Text)+Convert.ToDouble(C.Text); 
string resultStr = String.Format("{0}+{1}+{2}={3}", A.Text, B.Text, C.Text, sum); 
+0

-1 : 문제가 해결되지 않습니다. –

-2

당신은 두 변수 처음에 중간 결과를 할당하고, 즉, 문자열로 결국

double d = Double.Parse(A.Text) + Double.Parse(B.Text) + Double.Parse(C.Text); 

을 넣어해야 당신은 여기까지입니다

string result = d.ToString(); 

호출 할 수 있습니다 더 쉽습니다.

here을 참조하십시오.

+0

-1 : 문제가 해결되지 않습니다. –

관련 문제