2012-06-26 43 views
0

當數字很大時,我遇到了這個問題。例如,如果數字是3670000000,我希望標籤爲36.7億。當數字很大時,它給我一個值2,147,483,657。我相信它一定是一個可變長度的問題。我試着用long long int來獲取numC。任何建議將不勝感激。謝謝。objective c - 帶格式化的Xcode 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; 

回答

1

該類型的值不能大於2,147,483,657。你可以使用無符號整數,最大值是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

如果您真的需要使用大於int所允許的數字的操作,那麼還有用於bigInteger的C++類。如果您不需要執行許多操作,請將該號碼存儲爲NSString。然後使用它,只需將字符串結尾,將其轉換爲int,執行操作,然後將該數字放回字符串中。

+0

我只想比較哪個更大。我認爲我會用長久的整數去做,如果它更大,我會以不同的方式工作。 –

+0

當然。儘管爲了比較,您實際上只需要從數字字符串的開始處開始(最高值結束)並向下迭代,直到找到差異。然後,無論哪個數字更高都屬於較大的數字。 – Dustin