내 nsnumberformatter 객체가 입력 1.0의 "2"를 인쇄하는 이유는 무엇입니까?
-
19-09-2019 - |
문제
API의 버그처럼 보입니다.
입력 CGFloat가 0.0이면 다음과 같습니다.
Input = 0.000000, Output = +0
입력 CGFloat가 1.0이면 다음과 같습니다.
Input = 1.000000, Output = +2
분명히 그것은 내가 원하는 것이 아닙니다 ;-)
이제 nsnumberformatter 객체를 만드는 방법은 다음과 같습니다.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setAllowsFloats:YES];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setMinimumFractionDigits:0];
[formatter setPlusSign:@"+"];
[formatter setMinusSign:@"-"];
[formatter setPositivePrefix:@"+"];
[formatter setNegativePrefix:@"-"];
[formatter setRoundingMode:NSNumberFormatterRoundUp];
그리고 이것이 내가 cgfloat의 1.0f를 형식화하게하는 방법입니다.
CGFloat myValue = 1.0f;
NSNumber *number = [NSNumber numberWithFloat:myValue];
NSLog(@"Input = %f, Output = %@", myValue, [self.inputValueFormatter stringFromNumber:number]);
반올림 모드가 여기서 문제 일 수 있습니까? 어느 것을 지정해야합니까? 아니면이 이상한 행동의 또 다른 원인이 있습니까?
해결책
왜 이것이 왜 그런지 잘 모르겠지만 이것을 속임수로 만드는 것 같습니다.
[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
제휴하지 않습니다 StackOverflow