我的数字低于存储为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"]];
答案 0 :(得分:0)
将对象转换为另一个对象(又名(NSNumber *)
)会不“转换”它。它只是向编译器承诺你正在使用那个的对象你不是。
一些数字完全失败的原因是因为它们太大而不适合标准的int / float / long尺寸。使用NSNumber
- NSDecimalNumber
的子类而不是NSNumber
(因此您仍然可以使用所有NSNumber
方法)。它专门用于处理大数字:
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:<your string object>];