NSNumber 转 NSString 直接转换导致的精度问题

    NSNumber *number =@64.4;
    
    double d            = [number doubleValue];

    
    // 直接转换 NSNumber->NSString
    NSString *text1 = [number stringValue];
    
    // NSNumber-> Double ->NSString ->NSDecimalNumber ->NSString
    NSString *dStr      = [NSString stringWithFormat:@"%f", d];
    NSDecimalNumber *dn =[NSDecimalNumber decimalNumberWithString:dStr];
    NSString *text2 = [dn stringValue];
    
    // NSNumber-> Double ->NSString
    NSString *text3 = [NSString stringWithFormat:@"%f", d];

    NSLog(@"text1 ==== %@  text2 ===== %@  text3 ===== %@",text1,text2,text3);

输出

2020-12-14 19:36:57.614561+0800 DelegateDemo[13970:359440] 
text1 ==== 64.40000000000001  text2 ===== 64.4  text3 ===== 64.400000
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容