0

我面临一个问题,但似乎找不到解决方案。我有一个文本字段,用户在其中输入数字。问题是当用户在小数点后输入最后一个数字为零时,它不会占用。例如 - 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。

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

提前致谢

4

3 回答 3

2

设置两者

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

如果您总是想在小数点分隔符后打印两位数。

于 2013-03-06T09:28:43.380 回答
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"];
        }
    }

组合字符串是用户正在输入的输入。我正在检查“。” 放置并检查最后一个数字是否为零。如果是,则添加我自己的零。现在用户在键入时可以看到 43.50 而不是 43.5

于 2013-03-06T10:47:02.567 回答
0

你可以使用这个:

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

它将打印 47.78

于 2013-03-06T09:22:48.607 回答