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

将一个对象转换为另一个对象(又名(NSNumber *))不会转换”它。它只是向编译器保证您正在使用您不是该类的对象。

某些数字完全失败的原因是它们太大而无法适应标准的 int/float/long 尺寸。而不是NSNumber,使用NSDecimalNumber- 的子类NSNumber(因此您仍然可以使用所有NSNumber方法)。它专为处理大量数据而设计:

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

于 2012-05-04T06:26:41.917 回答