如何克服2,147,483,647问题NSNumberFormatter

时间:2012-09-05 10:30:43

标签: iphone ios5 nsnumber nsnumberformatter

-(NSString *)convertCurrency:(NSString *)textFieldString{
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

    [numberFormatter setNumberStyle: NSNumberFormatterNoStyle];
    [numberFormatter setGroupingSize:3];
    [numberFormatter setGroupingSeparator:@","];
    [numberFormatter setUsesGroupingSeparator:YES];
    [numberFormatter setMaximumIntegerDigits:20];
    number= [NSNumber numberWithInt:[textFieldString intValue]];
    NSString *numberString = [NSString stringWithFormat:@"$%@",[numberFormatter stringForObjectValue:number]];
    return numberString;
}

当我发送textfield字符串值为send 10000000000时,只返回$ 2,147,483,647,但我只想要10,000,000,000美元。如何解决这个问题。

2 个答案:

答案 0 :(得分:4)

使用long long。假设9,223,372,036,854,775,807美元就足够了。

NSNumber* number = [NSNumber numberWithLongLong:[textFieldString longLongValue]];
NSString* numberString = [numberFormatter stringFromNumber:number];
你可以使用

[numberFormatter setCurrencySymbol:@"$"];

而非-stringWithFormat:添加美元符号。

答案 1 :(得分:1)

http://en.wikipedia.org/wiki/Integer_(computer_science)#

你的价值是int,最大值。 int可以容纳的值是2147483647。 您必须使用其他类型,例如long。

检查此问题:long integer value objective-c