2013-03-06 274 views
0

我面临一个问题,但似乎无法找到解决方案。我有一个文本框,用户输入数字。问题是,当用户输入最后一位数字后小数点后为零,它没有考虑到 - 42.70打印为42.7.Find下面NsNumberFormatter没有给出正确的结果

NSNumberFormatter *_numberFormatter =[NSNumberFormatter new]; 
    _numberFormatter.maximumFractionDigits=2; 
    _numberFormatter.minimumIntegerDigits=1; 
    _numberFormatter.roundingMode=kCFNumberFormatterRoundCeiling; 
    _numberFormatter.allowsFloats=YES; 
    [email protected]","; 
    _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。

我缺少设置一些parameters.Any帮助需要

由于提前

回答

2

同时设置

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

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

+0

我试过这样做,但即使用户类型4在文本框中,它将返回4.00,他将无法进一步键入。所以不能这样做。 – 2013-03-06 09:31:06

+0

@dead_soldier,尝试使用两个格式化程序,一个用于输入,一个用于输出 – vikingosegundo 2013-03-06 09:32:04

+0

@dead_soldier:在用户输入时是否替换文本字段中的文本? – 2013-03-06 09:33:19

0

您可以使用此:

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

将打印47.78

+0

即使现在它正在打印小数点后的数字,但问题是当用户输入0在末端像12.50.It没有返回12.50但12.5。我知道它是相同的,但它需要显示给用户12.50 – 2013-03-06 09:33:38

0

发现我们必须做一些操作来从我们的side.io加入一个奇怪的方式,不允许它。因此下面是我的code.Hope它也有帮助。

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

相关问题