产品的需求是这样的:1.小数点后有数据最多保留2位;2.小数点后只显示到最后一位不为0的那位;
然后解析数据。。哒哒哒。。。我屮艸芔茻,这是什么??
果断去找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];
}
网友评论