2012-04-04 2 views
12

문자열 매개 변수를 받고 정수로 변환하는 함수가 있습니다.
안전한 변환을 위해 int.TryParse()가 사용됩니다.int.TryParse()는 "#. ##"에 대해 false를 반환합니다.

public IEnumerable<object> ReportView(string param1, string param2) 
{ 
    int storeId = int.TryParse(param1, out storeId) ? storeId : 0; 
    int titleId = int.TryParse(param2, out titleId) ? titleId : 0; 
    IEnumerable<object> detailView = new Report().GetData(storeId, titleId); 
    return detailView; 
} 

함수 호출 ReportView는 ("2", "4") -> int.Tryparse 성공적으로 번호를
함수 호출 ReportView을 구문 분석 ("2.00"은 "4.00") -> int.TryParse 실패 숫자를 파싱하는 것

왜? 어떤 생각?

@Update
죄송 사람은, 내 개념은 틀렸다. 나는 C#에 익숙하다. Int.TryParse()가 정수 부분을 반환하고 소수를 무시할 것이라고 생각했다. 하지만 Convert.ToInt32 ("string")
감사합니다.

+1

문화권도 지정해야합니다. – CodesInChaos

+4

왜 이것이 downvoted인지 모르겠다. 질문은 분명히 초보자 용 질문이지만 명확하고 합리적으로 잘 공식화됩니다. –

+1

@moguzalp 사람들이 질문 할 때 무언가를 알지 못해서 downvoted해야합니까? –

답변

6
public IEnumerable<object> ReportView(string param1, string param2) 
{ 
    decimal tmp; 
    int storeId = decimal.TryParse(param1, out tmp) ? (int)tmp : 0; 
    int titleId = decimal.TryParse(param2, out tmp) ? (int)tmp : 0; 
    IEnumerable<object> detailView = new Report().GetData(storeId, titleId); 
    return detailView; 
} 

위의 내용은 정수 또는 소수 문자열에서 작동합니다. "2.123"형식의 문자열은 Integer 값 2가 반환됨을 알립니다.

5

int.TryParse는 문자열을 구문 분석하지 않고 정수를 변환하려고 시도하지 않습니다. 10 진수 문자열의 경우 decimal.TryParse를 사용해야합니다.

2

2.00 및 4.00은 정수 데이터 유형이 아닙니다. 그 이유는 무엇입니까? DoubleParse() 또는 decimal.TryParse()

1

10 진수가 정수가 아니기 때문에 구문 분석에 실패합니다.

1

"2.00"은 정수가 아니기 때문에 십진수입니다.

2

잘 2.00은 컴퓨터 눈에서 int가 아닌 십진수입니다.

3

2.00 및 4.00은 정수가 아닙니다. 십진수를 파싱하려면 decimal.TryParse() 또는 double.TryParse()를 사용하고 자르거나 0 값 가수가 있는지 검사합니다.

1

Int32 (int)는 정수 값만 포함 할 수 있습니다. 따라서 Int32 Parse/TryParse 함수는 소수를 사용하여 문자열을 구문 분석 할 수 없습니다. 문자열 값에 소수를 포함 할 수 있지만 정수를 나타내려면 Decimal.TryParse를 사용하고 캐스팅하십시오.

2

컴퓨터에 "2.00"은 정수가 아닌 부동 소수점/십진수입니다. decimal.TryParse() 대신 trailing 0을 제거하여 문자열을 사전 처리 한 다음 int.TryParse()를 수행 할 수 있습니다. 그래서 만약 당신이 "2.00"을 가지고 있다면, 당신은 "."문자에 도달 할 때까지 문자열의 마지막 문자를 계속 체크 (그리고 버림)합니다. (소수). "0"또는 "."인 경우 너는 그것을 떨어 뜨릴 수있다. 결국에는 "2"로 끝납니다.