繁体   English   中英

从NSCFString到NSNumber的对话

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM