2013-03-06 111 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