2012-06-26 2 views
0

У меня проблемы с этим, когда числа большие. Например, если число составляет 3670000000, я хочу, чтобы метка составляла 3670 000 000. Когда числа большие, это дает мне 2,147,483,657. Я уверен, что это проблема с переменной длиной. Я попытался использовать long long int для numC. Любые предложения будут ценны. Благодарю.Объектив c - длинный экран Xcode с форматированием

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; 

ответ

1

Тип int не может иметь значение больше, чем 2,147,483,657. Вы можете использовать unsigned int и максимальное значение будет 4 294 967 295. Посмотрите here для получения дополнительной информации. Вы можете попробовать это тоже расширить диапазон типа данных:

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.

Надеюсь, это поможет!

0

Существует также класс C++ для bigInteger, если вам действительно нужно выполнять операции с числами, которые больше, чем разрешено int. Если вам не нужно делать много операций, сохраните номер как NSString. Затем для работы с ним просто возьмите конец строки, преобразуйте ее в int, выполните свои операции, а затем верните номер в строку.

+0

Я просто хочу сравнить, что больше. Я думаю, что я просто пойду с длинным длинным int, и если его больше, я буду работать по-другому. –

+0

Несомненно. Хотя для сравнения вам действительно нужно только начинать с начала строки номера (наивысший результат) и итерировать до тех пор, пока вы не найдете разницу. Затем, в зависимости от того, какое число больше, относится к большему числу. – Dustin