NsNumberFormatter没有给出正确的结果

时间:2013-03-06 09:14:55

标签: ios objective-c nsnumberformatter

我正面临一个问题,但似乎无法找到解决方案。我有一个用户输入数字的文本字段。问题是,当用户在小数位后输入最后一位数为零时,它不会服用。 - 42.70打印为42.7。找到下面的代码

  NSNumberFormatter *_numberFormatter =[NSNumberFormatter new];
     _numberFormatter.maximumFractionDigits=2;
    _numberFormatter.minimumIntegerDigits=1;
    _numberFormatter.roundingMode=kCFNumberFormatterRoundCeiling;
    _numberFormatter.allowsFloats=YES;
    _numberFormatter.groupingSeparator=@",";
    _numberFormatter.usesGroupingSeparator=YES;
    _numberFormatter.groupingSize=3;
   _numberFormatter.minimum=[NSNumber numberWithInt:0];
    [_numberFormatter setLenient:YES];
    [_numberFormatter setUsesSignificantDigits:NO];

NSNumber *number = [nf numberFromString:combinedString];
    NSString *formattedString = [nf stringFromNumber:number];

格式化的字符串是打印输入的值,如果在最后一个位置输入sans 0,但如果有任何其他数字,则打印正确的数字,如42.78打印,但43.70打印为43.7。

我缺少设置一些参数。需要任何帮助

先谢谢

3 个答案:

答案 0 :(得分:2)

同时设置

_numberFormatter.maximumFractionDigits = 2;
_numberFormatter.minimumFractionDigits = 2;

如果您始终要在小数分隔符后打印两位数字。

答案 1 :(得分:0)

您可以使用:

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSNumber *n = [NSNumber numberWithFloat:47.78];
NSLog(@"%@", [fmt stringFromNumber:n]);

它将打印47.78

答案 2 :(得分:0)

发现我们必须进行操作以从我们这边添加零.iOS以奇怪的方式工作并且不允许它。所以下面是我的代码。希望它对其他人也有帮助。

NSArray *formatArr = [combinedString componentsSeparatedByString:@"."];
    NSString *str = [formatArr lastObject];
    NSString *code;
    if ([str length] >0) {
        code = [[formatArr lastObject] substringFromIndex: [str length] - 1];
        if ([str isEqualToString:@"00"])
        {

        }
        else
        {
            if ([combinedString hasSuffix:@".0"])
            {
                formattedString=[formattedString stringByAppendingString:@".0"];
            }
            else if ([code isEqualToString:@"0"]) {
                formattedString = [formattedString stringByAppendingString:@"0"];
            }
        }
    }
    else
    {
        if ([combinedString hasSuffix:@".0"])
        {
            formattedString=[formattedString stringByAppendingString:@".0"];
        }
    }

Combinedstring是输入用户正在输入。我正在检查'。'放置并检查最后一位数是否为零。如果是,则从我自己的位置添加零。现在用户可以在输入时看到43.50而不是43.5