由于从后端接口反给我们的数据有浮点型或double.我们接收的为Number,要展示时 用stringValue或stringWithFormat来转换成String展示,很容易造成精度的丢失。
原因:因为浮点数在计算机中是采用IEEE规定的标准浮点格式,即二进制科学表示法。float和doublel类型数据在计算机中存储可能是不精确的。 当我们需要转换成浮点类型是数据时,最好用double,因为double的精度更高,出现丢精度的概率相对是较小的 如何理解double精度丢失问题? ,关于Java中浮点数精度丢失
1、在iOS中提供一个专用的类来处理浮点数据相关的运算:NSDecimalNumber
- (NSString *)decimalNumberWithNSNumber:(NSNumber * )number
{
double conversionValue = [number doubleValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}
///可以添加到NSString的类别里
2、NSNumberFormatter 实现小数位的保留控制
- (NS