문제

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]];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top