On Dec 12, 2009, at 7:38 PM, RedleX Support wrote: > My original intent was to store a representation of the float in a string so > I can load it back again. In the meanwhile I found that using the %a format > along with NSScanner's scanHexDouble does the trick (since I don't need that > string to be human readable a hex representation is ok for me) > > > double a=pi; > double b; > > [[NSScanner scannerWithString:[NSString stringWithFormat:@"%a",a]] > scanHexDouble:&b]; > > if (a==b) > NSLog(@"Success"); > else > NSLog(@"Failure");
I hadn't thought of that -- I was going to suggest using NSArchiver and NSUnarchiver, though that approach would produce binaries rather than strings. NSScanner will work if you know you're always going to have a normal value but doesn't handle the nan and inf cases Andrew mentioned. I'm guessing you can get around that by writing your own trivial parser class that detects "nan", "inf", and "-inf" and converts those special cases to NAN, INFINITY, and -INFINITY, and uses NSScanner for all other cases. I don't know enough about "non-normal" float values to know for sure, though it might be close enough for your purposes. As a side note, I found that you don't get perfect precision if you store an NSNumber in a plist; it looks like it stores the stringValue. Out of curiosity, I wonder how Core Data stores floats and doubles if you choose an XML data store. I would expect it to be precise, but I'm admittedly too lazy to check. --Andy _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com