NSString转NSNumber数据精度问题

产品的需求是这样的:1.小数点后有数据最多保留2位;2.小数点后只显示到最后一位不为0的那位;

然后解析数据。。哒哒哒。。。我屮艸芔茻,这是什么??

NSString转NSNumber数据精度问题_第1张图片

果断去找php的茬,然后。。打印正确,再然后。。安卓也正确。。然后,硬生生被怼了回来。



经过查看文档发现,NSNumber的description方法存在一定缺陷,转换成NSString类型时发生了精度的丢失,部分数值由float表示时位数不够,导致了出错,换成double类型之后能够解决。但是如果直接doubleValue的话可能表示的位数还是.f,精度上还是不够的。

+(NSString *)reviseString:(NSString *)str

{

    double value = [str doubleValue];

    NSString *temp = [NSString stringWithFormat:@"%lf", value];

    NSDecimalNumber *resultNumber = [NSDecimalNumber  decimalNumberWithString:temp];

    return [resultNumber stringValue];

}

你可能感兴趣的:(NSString转NSNumber数据精度问题)