큰 숫자의 서식을 지정하는 데 문제가 있습니다.NSNumberFormatter iOS 큰 배 값
처음 숫자와 내가 문자열을 저장해야하기 때문에 문자열을 포맷, 난 그것에서 stringValue를 얻을 :
formatter = [[NSNumberFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesSignificantDigits:NO];
[formatter setMaximumFractionDigits:6];
[formatter setMinimumFractionDigits:0];
[formatter setGroupingSeparator:@""];
value = [formatter numberFromString:textField.text];
label = [value stringValue]
및 모든 즉, 내가 123456745678592.6을 입력하면, 괜찮습니다, 나는거야 123456745678592.6.
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGroupingSeparator:@""];
[numberFormatter setUsesSignificantDigits:NO];
[numberFormatter setMinimumFractionDigits:0];
[numberFormatter setMaximumFractionDigits:6];
tempString = myNumberString;
NSLog(@"number: %@",[NSNumber numberWithDouble:[tempString doubleValue]]);
tempString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:[tempString doubleValue]]];
NSLog(@"string translated: %@",tempString);
그리고 난이 얻을 :
그럼 때문에 다른 로케일의 문자열을 포맷했습니다 "번호 : 123456745678592.6" "문자열이 번역 : 123456745678593"
이 반올림 때 발생을 의미있는 자릿수는 15보다 큽니다.
내가 입력하면 : 12345674567859.2 다음 올바른 번호, 즉 0123을 얻습니다"번호 : 12345674567859.2" "번역 된 문자열 : 12345674567859.2"
과 : 12345674567859.23 내가 얻을 : "번호 : 12345674567859.23" "번역 된 문자열 : 12345674567859.2"
만에 : 내가 얻을 이 : "번호 : 1234567456785921" "1234567456785920"
이 값은 nsnumberformatter의 본질적인 제한이며, 문서가 이것에 관해서 아무것도 말하지 않았기 때문에, 또는 나는 무엇인가 잘못하고있다?
내 생각에 내 게시물 NSLog (@ "number : % @", [NSNumber numberWithDouble : [tempString doubleValue]])에서 알 수 있듯이 이것에 대해 생각했습니다. 잘리지 않고 올바른 값을 인쇄합니다.숫자가 16보다 클 때 자르기 시작합니다. – Cpu86
[numFormatter setMaxium :]을 사용해 보았습니까? 최대 값에 액세스하여 그 값을 읽을 수도 있습니다 –
[numberFormatter setMaxium : nil] 시도했지만 아무 것도 변경되지 않았습니다. – Cpu86