이 질문과 비슷한 문제가 있습니다 : How to obtain an unformatted string representation of an NSDecimal or NSDecimalNumber? 정확하게 NSNumber로 표시되는 문자열 형식의 숫자가 필요하지만이 숫자는 다른 문자열의 문자열로 다시 변환됩니다 장소, 나는 그것을 피할 수 없다. 내가 가지고있는 문제는 숫자가 문자열로 다시 변환 될 때 문자열이 어떤 경우 과학 표기법에 있다는 것입니다.NSDecimalNumber 출력을 NSString으로 사용하지 않음
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:@"0.0001"];
NSString *s = [dn stringValue]; // s will be @"1E-4"
이 숫자가 과학 표기법으로 표시되지 않도록하려면 어떻게해야합니까?
내가 언급 한 다른 질문과 동작의 차이를 설명 할 수있는 mac 또는 iPhone 대신 2005 년경 GNUstep (GNUstep Base의 경우 v1.11.1 일 가능성이 있음)에서 일하고 있습니다. base library API과 내 자신의 GNUstep 설치 설명서를 살펴 봤지만 도움이 될만한 것을 찾지 못했습니다.
편집 2/7/12는 :
질문이 약간 변경되었습니다하지만 목표는 여전히 동일합니다. 원래는 문자열 출력 부분을 제어 할 수 있다고 생각하지 않았지만 값을 문자열로 다시 전달할 수 있습니다. 이 시점에서 서식 지정 문자열을 사용하려고 시도하지만 과학 표기법이 나타나지 않도록하고 싶습니다.
[NSString stringWithFormat:@"%1.14g", [val doubleValue]]
나는 우리가 값의 유효 숫자의 특정 숫자를 좋아하기 때문 %g
을 사용하도록 선택했습니다. %f
을 사용하면 여분의 0을 다듬을 수 있지만 그 숫자가 항상 깨끗하게 나오지는 않습니다. 예를 들어, 800000000.79는 800000000.7899999600으로 나타납니다.
으로 깨끗하게 포맷 된 수치를 얻을 수있는 방법이 최대 숫자의 번호 앞에 과학적 표기법을 표시없이 유효 숫자 (또는 소수점 이하 자릿수) 의 특정 번호에 있습니까?
나는 C의 조언을 기꺼이 받아 들일 의향이 있습니다.
우리가 어쩌면 (1.11.1을 사용하고 그누 스텝의 어떤 버전처럼 보인다?), NSNumberFormatter 클래스는 완전히 구현되지 않습니다. "이 클래스는 현재 GNUstep에 구현되어 있지 않습니다! 모든 set 메서드가 작동하지만 stringForObject : 형식을 완전히 무시합니다. 아래 문서는 동작을 설명합니다 ..." –