NSNumber和NSString转化double失真问题

方法一:
在从string转化为number的时候,使用NSDecimalNumber

NSString *ns = @"8.2";
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:ns];
NSLog(@"%@", n.stringValue); //8.2

方法二:
在从number转化为string的时候,利用NSNumberFormatter

NSNumber *num  = [NSNumber numberWithDouble:@"8.3".doubleValue];
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
[formatter setGroupingSeparator:@""];
NSString *strD = [formatter stringFromNumber:num];
NSLog(@"%@", strD); //8.3

另外,在使用double转化为number的时候,如果先用一个变量接收了这个double,然后再用这个参数去生成number的时候,也会出现失真的问题,直接使用double生成number是没有问题的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容