如何以这种格式显示数字?

时间:2012-03-17 12:32:16

标签: objective-c ios

我在文本字段中显示一个数字。其中显示数字为“1234”,但我想以“1,234”的格式显示它,如果我输入显示为“12345”的另一个大号,但如果我输入123456,我想显示为“12345”显示为“123,456”。如何以所需格式格式化此数字?

-(void)clickDigit:(id)sender
{
    NSString * str = (NSString *)[sender currentTitle];
    NSLog(@"%@",currentVal);


    if([str isEqualToString:@"."]&& !([currentVal rangeOfString:@"."].location == NSNotFound) ) 
    {
        return;
    }
    if ([display.text isEqualToString:@"0"])
    {

        currentVal = str;
        [display setText:currentVal];
    }

    else if([currentVal isEqualToString:@"0"])
    {
        currentVal=str;
        [display setText:currentVal];

    }
    else
    {
        if ([display.text length] <= MAXLENGTH) 
        {
            currentVal = [currentVal stringByAppendingString:str];
            NSLog(@"%@",currentVal);
            [display setText:currentVal];
        }
        currentVal=display.text;
    }
}

这是我用来在文本字段中显示数字的代码。


编辑:我将我的代码更改为以下内容,但仍然无法正确格式化数字:

if ([display.text length] <= MAXLENGTH) {
    currentVal = [currentVal stringByAppendingString:str];
    NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
    [myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    NSNumber *tempNum = [myNumFormatter numberFromString:currentVal];
    NSLog(@"My number is %@",tempNum);
    [display setText:[tempNum stringValue]];
    currentVal=display.text;
}

2 个答案:

答案 0 :(得分:1)

你可以这样做:

int myInt = 12345;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *number = [NSNumber numberWithInt:myInt];
NSLog(@"%@", [formatter stringFromNumber:number]); // 12,345

修改

您没有正确实现此功能,关键是使用[formatter stringFromNumber:number]获取数字的字符串表示形式,但您没有这样做。所以将代码更改为:

currentVal = [currentVal stringByAppendingString:str];
NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
[myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSNumber *tempNum = [myNumFormatter numberFromString:currentVal];
NSLog(@"My number is %@",tempNum);
[display setText:[myNumFormatter stringFromNumber:tempNum]]; // Change this line
currentVal=display.text;
NSLog(@"My formatted number is %@", currentVal);

答案 1 :(得分:0)

首先,阅读NSNumberFormatter reference page上的方法列表。执行此操作后,您可能会意识到需要使用-setHasThousandSeparators:方法打开千位分隔符功能。您也可以使用-setThousandSeparator:方法设置自定义分隔符,但您可能不需要这样做。