서버에서 오는 값이 NSString, NSInteger 또는 float인지 확인해야합니다. 문자열의 경우 확인할 수 있습니다. 그러나 어떻게 float과 integer를 구별 할 수 있습니까?IOS에서 NSInteger 또는 부동 소수점 숫자인지 확인하는 방법은 무엇입니까?
답변
(난 당신이 서버에서 일부 문자열을 구문 분석하고 있다고 가정합니다. 그리고 로컬 INT/플로트/문자열로 변환합니다.)
클라이언트와 서버 모두 약간의 사양에 동의해야합니다. 예를 들어 부동 소수점에는 소수점이 와야합니다. 또는 결과에는 구체적인 유형을 설명하는 필드가 하나 더 있습니다. 문자열 값에서 실제 유형을 추론 할 수 없기 때문입니다.
정교하게 말하면 서버에서 "9.000"이 표시됩니다. int인지 float인지는 알 수 없습니다. 그러나 소수점의 존재가 부동 소수점을 의미한다는 데 동의하는 경우. 그것은 float가되지만 int는 아닙니다. 이 사실을 사용하여 파서를 만들 수 있습니다.
(중요) 또한 문자열에서 부동 소수점을 구문 분석 할 때 일반적으로 숫자 오류가 발생합니다. 서버가 클라이언트보다 부동 소수점 정확도가 낮 으면 클라이언트는 정확한 float 값을 얻을 수 없습니다. 부동 소수점 대신 고정 소수점으로 구문 분석해야합니다.
여기의 그것보다 일반적인 만들어 보자,
NSNumber * n = //from somewhere
if (strcmp([n objCType], @encode(float)) == 0) {
NSLog(@"this is a float");
} else if (strcmp([n objCType], @encode(int)) == 0) {
NSLog(@"this is an int");
}
편집
확인을 수행하는 방법
NSNumber *anyNSObject = [NSNumber numberWithFloat:0.4];
id obj = anyNSObject; //you can pass anything here as long as it is inherited from NSObject
if ([obj isKindOfClass:[NSString class]]) {
NSLog(@"This is string");
}
if ([obj isKindOfClass:[NSNumber class]]) {
NSLog(@"This is NSNumber");
if (strcmp([obj objCType], @encode(float)) == 0) {
NSLog(@"this is a float");
} else if (strcmp([obj objCType], @encode(int)) == 0) {
NSLog(@"this is an int");
}
}
입력 유형이 불분명하지만 대부분의 경우 작동합니다. – jimpic
그래,이 솔루션은 좋습니다 :) 잘 작동합니다. 고마워요 –
간단한 방법은 다음과 같습니다
NSRange range = [yourString rangeOfString:@"."];
if (range.length > 0){
NSLog(@"Double value");
}
else {
NSLog(@"Integer value");
}
지역화 된 숫자 형식에는 안전하지 않습니다. – jimpic
- 1. 입력이 숫자인지 확인하는 방법은 무엇입니까?
- 2. req.params가 숫자인지 확인하는 방법은 무엇입니까?
- 3. 문자열이 숫자인지 확인하는 방법은 무엇입니까?
- 4. iOS에서 부동 소수점 이후 자릿수를 계산하는 방법은 무엇입니까?
- 5. HTML 입력에 입력 된 사용자 값이 부동 소수점 숫자인지 확인합니다.
- 6. AS3 | 부동 소수점 숫자로 변경
- 7. raw_input이 부동 소수점 하나만 포함하고 있는지 확인하는 방법은 무엇입니까?
- 8. 부동 소수점 변수가 정수인지 확인하는 가장 신뢰할 수있는 방법은 무엇입니까?
- 9. 입력에 zf2 형식의 부동 소수점 값이 있는지 확인하는 방법은 무엇입니까?
- 10. 문자열의 첫 번째 문자가 문자 또는 숫자인지 확인하는 방법은 무엇입니까?
- 11. Freemarker에서 주어진 값이 숫자인지 확인하는 방법은 무엇입니까?
- 12. 변수가 숫자인지 여부를 확인하는 방법은 무엇입니까?
- 13. 입력 값이 숫자인지 확인하는 방법은 무엇입니까?
- 14. .NET에서 문자열이 숫자인지 확인하는 방법은 무엇입니까?
- 15. 변수가 숫자인지 문자열인지 확인하는 방법은 무엇입니까?
- 16. 문자열이 try/catch없이 숫자인지 확인하는 방법은 무엇입니까?
- 17. 부동 소수점 숫자를 반올림하는 방법은 무엇입니까?
- 18. 부동 소수점 오류를 방지하는 방법은 무엇입니까?
- 19. 부동 소수점 반올림 (자바로)
- 20. 시끄러운 부동 소수점 배열을 '체크섬'하는 방법은 무엇입니까?
- 21. Promela의 부동 소수점 계산
- 22. 소수점 형식을 확인하는 방법은 무엇입니까?
- 23. 부동 소수점 실수 부동 소수점 오류
- 24. 부동 소수점 덧셈과 부동 소수점 곱셈의 상대 속도는 무엇입니까
- 25. XML의 부동 소수점 숫자
- 26. jscript에서 부동 소수점 숫자를 자르는 방법은 무엇입니까?
- 27. 부동 소수점 상수에 액세스하는 방법은 무엇입니까?
- 28. R에서 부동 소수점 정밀도를 유지하는 방법은 무엇입니까?
- 29. 부동 소수점 뒤에 숫자를 제거하는 방법은 무엇입니까?
- 30. OpenCV에서 부동 소수점 이미지를 마스크하는 방법은 무엇입니까?
당신은/플로트/문자열을 정수로 문자열을 구문 분석하고 있습니까? – HKTonyLee
서버에서이 "가치"를 얻는 방법에 대한 세부 정보를 추가하십시오. – jimpic
서버에서 오는 값을 추가하십시오. – rptwsthi