ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iOS NSNumber 的属性 stringValue 造成的偏差

2021-08-04 10:30:23  阅读:38  来源: 互联网

标签:%. obj NSLog iOS stringWithFormat NSString NSNumber stringValue


0x00 上代码

    NSNumber *obj = @(99999.99);
    NSLog(@"%@",obj.stringValue); // 99999.99000000001
    
    obj = @(99999.98);
    NSLog(@"%@",obj.stringValue); // 99999.98
    
    obj = @(99999.999);
    NSLog(@"%@",obj.stringValue); // 99999.999
    
    obj = @(99999.998);
    NSLog(@"%@",obj.stringValue); // 99999.99800000001

结论:不要用 NSNumberstringValue 来格式化数字,否则会出现显示误差的问题。


0x01 正确姿势

    CGFloat obj = 99999.99;
    NSLog(@"%@",[NSString stringWithFormat:@"%.6lf", obj]); // 99999.990000
    
    obj = 99999.98;
    NSLog(@"%@",[NSString stringWithFormat:@"%.6lf", obj]); // 99999.980000
    
    obj = 99999.999;
    NSLog(@"%@",[NSString stringWithFormat:@"%.6lf", obj]); // 99999.999000
    
    obj = 99999.998;
    NSLog(@"%@",[NSString stringWithFormat:@"%.6lf", obj]); // 99999.998000

一款小巧的在线编译器

请添加图片描述


标签:%.,obj,NSLog,iOS,stringWithFormat,NSString,NSNumber,stringValue
来源: https://blog.csdn.net/xjh093/article/details/119377928

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有