美文网首页
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