3
-(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;
}

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

4

2 回答 2

4

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

NSNumber* number = [NSNumber numberWithLongLong:[textFieldString longLongValue]];
NSString* numberString = [numberFormatter stringFromNumber:number];

顺便说一句,您本来可以使用

[numberFormatter setCurrencySymbol:@"$"];

而不是-stringWithFormat:添加美元符号。

于 2012-09-05T10:38:51.163 回答
1

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

您将您的价值作为一个 int 和最大值。int 可以容纳的值是 2147483647。您必须使用其他类型,例如 long。

检查这个问题:长整数值objective-c

于 2012-09-05T10:35:17.237 回答