double、float 转 NSString的精确度丢失问题
2021-01-24 本文已影响0人
迷失的信徒
在我们的项目中,经常会因为图方便去用创建模型中的NSString的属性去接收服务端返回的JSON数据,这里以下面简单字符串为例:
{
data:5.3
}
如果直接在label上面显示的话显示的会是5.30000000000001,究其原因,是JSON数据在转化成NSDictionary时,会将基本数值类型转换为__NSCFNumber,如下图所示;
![](https://img.haomeiwen.com/i5965079/46985fcc6b105fb3.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;
}
暂时就这些后期还有的话再继续补充