开发中常遇到浮点转字符串,然而不是所有情况都需要保留固定的小数位数,有时候为了视觉统一,我们需要把小数点后无效的0去除。常规的处理方法是转为NSNumber,但是依然会有精度丢失的情况,最优的方案是使用精准度更高的NSDecimalNumber来处理,可以有效避免精度丢失,又能保证去除多余的0:
NSString*testNum = @"0.07000";
// 常规转NSNumber方式
NSString*normalString = [NSString stringWithFormat:@"%@", @([testNum doubleValue])];
// NSDecimalNumber 方式
NSDecimalNumber*numDecimal = [NSDecimalNumber decimalNumberWithString: testNum];
NSString*numString = [NSString stringWithFormat:@"%@", numDecimal];
NSLog(@"normalString去零后 :%@\n numString去零后 :%@\n ", normalString, numString);
输出效果对比: