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

2021-01-24  本文已影响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;
}

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

上一篇下一篇

猜你喜欢

热点阅读