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 を超える値を保持できません。unsigned int を使用すると、最大値は 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 に答える