0

当数字很大时,我遇到了这个问题。例如,如果数字是 3670000000,我希望标签是 3,670,000,000。当数字很大时,它给我的值为 2,147,483,657。我确定这一定是一个可变长度问题。我尝试对 numC 使用 long long int。任何建议将不胜感激。谢谢。

int numC;
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *valuestring= [NSString stringWithFormat:@"%@", [[values objectAtIndex:indexA] objectForKey:@"hits"]];
numC=[valuestring intValue];


NSString *results = [formatter stringFromNumber:[NSNumber numberWithInteger:numC]];    
label1.text =results;
4

2 回答 2

1

int类型不能包含大于 2,147,483,657 的值。您可以使用无符号整数,最大值为 4,294,967,295。在这里查看更多信息。您也可以尝试这样做来扩展数据类型的范围:

long long int numC;

//Number formatter and string operations

numC = [valuestring longLongValue];

NSString *results = [formatter stringFromNumber:[NSNumber numberWithLongLong: numC]];    
label1.text = results;

此外,如果您检索的值都不包含负值,则可以将其设为unsigned long long int. 在这种情况下,使您的代码如下:

unsigned long long int numC;

//Number formatter and string operations

numC = [valuestring longLongValue];

NSString *results = [formatter stringFromNumber:[NSNumber numberWithUnsignedLongLong: numC]];    
label1.text = results;

还要确保在这一行...

 NSString *valuestring= [NSString stringWithFormat:@"%@", [[values objectAtIndex:indexA] objectForKey:@"hits"]];

...您正在检索的值是long long int.

希望这可以帮助!

于 2012-06-26T17:32:12.543 回答
0

bigInteger如果您确实需要对大于允许的数字进行操作,还有 C++ 类int。如果不需要做很多操作,将数字存储为 NSString。然后使用它只需将字符串的结尾,将其转换为int,进行操作,然后将数字放回字符串中。

于 2012-06-26T17:37:38.853 回答