[英]NSNumber not casting correctly and being interpreted as NSCFString?
[英]Conversation from NSCFString to NSNumber
我下面的数字存储为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"]];
铸造一个对象作为另一个对象(又名(NSNumber *)
不 “转化”了。 它只是向编译器保证您正在使用的不是该类的对象。
一些数字完全失败的原因是因为它们太大而无法容纳标准的int / float / long大小。 代替NSNumber
,使用NSDecimalNumber
- NSNumber
的子类(因此您仍然可以使用所有NSNumber
方法)。 它是专门为处理大量数据而设计的:
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:<your string object>];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.