2012-03-22 4 views
5

내가 가진 변수의 데이터 유형이 double인지 확인해야합니다. 이것은 내가 뭘하려 : 변수의 데이터 유형이 double인지 확인

try 
{ 
    double price = Convert.ToDouble(txtPrice.Text); 
} 
catch (FormatException) 
{ 
    MessageBox.Show("Product price is not a valid price", "Product price error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    return false; 
} 

나는이 일 것이라고 생각하지만, txtPrice.Text에서, Convert 클래스는 단지 그것을 구문 분석됩니다 거기에 숫자 이외의가 있다면 분명히, 나는 깨닫지 못했습니다.

어떻게하면 변수가 double인지 쉽게 확인할 수 있습니까?

+0

"variable"은 잘못된 단어입니다. 텍스트를 부동 소수점 값으로 변환 할 수 있는지 확인하려고합니다. 변수의 유형을 결정했다면 variable.GetType() == typeof (double) – Brannon

답변

23

사용이 :

double price; 
bool isDouble = Double.TryParse(txtPrice.Text, out price); 
if(isDouble) { 
    // double here 
} 
+0

을 사용하는 것이 좋습니다. 그러나 가격으로 "쿼티 (qwerty)"를 입력하면 여전히 가능합니다. 그러나 나는 그것을 공란으로 남겨두면 그것을 잡는다. –

+0

tryparse에서 반환 한 bool 결과 사용 – ionden

3

사용 Double.TryParse method는 :

double price; 
if (Double.TryParse(txtPrice.Text, out price)) 
{ 
    Console.WriteLine(price); 
} 
else 
{ 
    Console.WriteLine("Not a double!"); 
} 
0

당신이 유효한지 확인하기 위해

  • double.ParseExact 또는
  • 사용 정규식을 사용할 수 있습니다.
0

귀하의 질문에 대한 답변을 얻으려면 번호 만 허용하고 싶습니까? 사실이라면 아마도 도움이 될 것입니다.

string Str = textBox1.Text.Trim(); 
double Num; 
bool isNum = double.TryParse(Str, out Num); 
if (isNum) 
MessageBox.Show(Num.ToString()); 
else 
MessageBox.Show("Invalid number"); 
0

당신은 두 배를 만들 수없는 경우가 false를 반환합니다 double.TryParse()를 사용할 수 있습니다.

0

은 그냥 사용할 수 없습니다 :

double.Parse(txtPrice.Text); 

?

이렇게하면 "입력 문자열이 올바른 형식이 아닙니다."라는 FormatException이 표시됩니다. 문자열 값이 double 값이 아니라면 어쨌든 수동으로 처리 한 값과 대략 비슷합니다. 당신을 해달라고 왜

1

은 다음과 같이 뭔가를 시도 - 변수가 두 번 유형의 경우

double doubleVar; 
    if(typeof(doubleVar) == double) { 
     printf("doubleVar is of type double!"); 
    } 

이 쉽게 확인할 수 있습니다.

7

어떻게하면 변수가 double인지 쉽게 확인할 수 있습니까?

여기에 대해 더 명확히해야합니다. 나는 당신이 당신이 생각하는 것을 요구하고 있다고 생각하지 않으며, 용어의 차이점을 인식 할 가치가 있습니다.

인 변수가이고 double 인 경우 분명히 double입니다.당신이 유형 object, ValueType하거나 지원하는 인터페이스 중 하나의 선언되는 변수를 가지고있는 경우에, 당신은

if (value is double) 

를 사용할 수 있지만 그것은 여부 무엇인지 정말 알고 싶어 같은 소리 문자열 값은 이며, 구문 분석 가능double입니다. 이를 위해서는 double.TryParse을 사용해야하지만 에 관심이있는 문화를 생각해야합니다. 예를 들어 "15,5"를 유효한 double으로 보시겠습니까? 유럽 ​​사용자는 가능하지만 미국 사용자는 그렇지 않을 수 있습니다. 천 단위 구분 기호를 허용 하시겠습니까?

IFormatProvider 걸리는 과부하를 사용하고 적절한 문화권을 사용하는 것이 좋습니다. 관심있는 문화권 인 이 기본값 인 인 경우에도 마찬가지입니다.

당신은 아마 원하는 :

double result; 
// For suitable values of text, style and culture... 
bool valid = double.TryParse(text, style, culture, out result); 

는 그 다음 실제로 올바르게 구문 분석되었는지 여부를 결정하기 위해 valid 변수를 사용합니다. valid이 true이면 result의 값은 구문 분석 된 값입니다. valid이 거짓이면 result은 0이됩니다.

관련 문제