从NSCFString到NSNumber的对话

时间:2012-05-04 06:19:50

标签: iphone nsstring type-conversion nsnumber

我的数字低于存储为NSCFString的数字


这些数字完美转换

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"]];

1 个答案:

答案 0 :(得分:0)

将对象转换为另一个对象(又名(NSNumber *))会“转换”它。它只是向编译器承诺你正在使用那个的对象你不是

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

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