1

NSCFString として SQLite に格納されている数値を以下に示します


これらの数値は完全に変換されます

475602307163925662

1529228456639250520

私はこれらを次のように変換していますが、(NSNumber *) [myDictionary valueForKey:@"stringData"]; 完全に機能しています


これらの数値は完全に変換できませんでした

14154269406789154303

13207084142614401684

12870871772958895646

これらの NSCFString を NSNumber に変換したいと思います。以下のコードを使用してググってみましたが、必要な正確な解決策が得られません。どんな助けでも感謝します。

NSNumberFormatter *f=[[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber=[f numberFromString:[myDictionary valueForKey:@"stringData"]];
[f release];

しかし、それは私の番号を9.45214212452152のように変換します

他の方法も試しましたが、うまくいきません。

NSNumber *myNumber=[NSNumber numberWithLong:[myDictionary valueForKey:@"stringData"]];
4

1 に答える 1

0

オブジェクトを別のオブジェクト (aka (NSNumber *))としてキャストしても、それは「変換」されません。それは、あなたがそうではないそのクラスのオブジェクトで作業していることをコンパイラに約束するだけです。

一部の数値が完全に失敗する理由は、それらが大きすぎて標準の int/float/long サイズに収まらないためです。の代わりにNSNumberNSDecimalNumber- のサブクラスをNSNumber使用します (したがって、すべてのNSNumberメソッドも引き続き使用できます)。大きな数を処理するように特別に設計されています。

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:<your string object>];

于 2012-05-04T06:26:41.917 に答える