سؤال

يشبه خطأ في 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]);

قد يكون RoundingMode المشكلة هنا؟ الذي يجب أن حدد؟ أم أن هناك سبب آخر لهذا السلوك الغريب؟

هل كانت مفيدة؟

المحلول

إضافة هذا يبدو أن تفعل الخدعة بالنسبة لي، على الرغم من أنني لست متأكدا من السبب في ذلك:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top