美文网首页
double、float 转 NSString的精确度丢失问题

double、float 转 NSString的精确度丢失问题

作者: 迷失的信徒 | 来源:发表于2021-01-24 17:50 被阅读0次

    在我们的项目中,经常会因为图方便去用创建模型中的NSString的属性去接收服务端返回的JSON数据,这里以下面简单字符串为例:

    {
          data:5.3
    }
    

    如果直接在label上面显示的话显示的会是5.30000000000001,究其原因,是JSON数据在转化成NSDictionary时,会将基本数值类型转换为__NSCFNumber,如下图所示;


    66EB4D171ABEBF6266809F9F76663311.jpg

    所以NSNumber直接转NSString的时候会有浮点数的精确度缺失。
    解决办法如下

    + (NSString *)changeDoubleToString:(NSString *)d{
        double num = [d doubleValue];
        NSString *dstr = [NSString stringWithFormat:@"%f",num];
        NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:dstr];
        return dn.stringValue;
    }
    

    暂时就这些后期还有的话再继续补充

    相关文章

      网友评论

          本文标题:double、float 转 NSString的精确度丢失问题

          本文链接:https://www.haomeiwen.com/subject/ucvmzktx.html