需求:
3.7800 => 3.78
4.0000 => 4
方法1:字符串截取
- (NSString *)removeExcessZeros:(NSString *)value {
if ([value rangeOfString:@"."].length != 0) {
[value rangeOfString:@"0" options:1];
while ([[value substringWithRange:NSMakeRange(value.length - 1, 1)] isEqualToString:@"0"]) {
value = [value substringWithRange:NSMakeRange(0, value.length - 1)];
}
// 考虑到如果小数点后面都为0的情况.也需要将小数点移除
if ([[value substringWithRange:NSMakeRange(value.length - 1, 1)] isEqualToString:@"."]) {
value = [value substringWithRange:NSMakeRange(0, value.length - 1)];
}
}
return value;
}
方法2: 利用NSNumberFormatter
- (NSString *)removeExcessZeros:(NSString *)value {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.minimumFractionDigits = 0; // 最小保留位数
numberFormatter.maximumFractionDigits = self.digit; // 最高保留位数
value = [numberFormatter stringFromNumber:@(value.doubleValue)];
return value;
}
方法3: 通过floatValue包装成NSNumber,(不能通过doubleValue,因为2转换成doubleValue可能会变成2.000000001,如果去后面0就会去不掉). 缺点是doubleValue使用不了,可适用于精确度小的数据
- (NSString *)removeExcessZeros:(NSString *)value {
value = @(value.floatValue).description;
return value;
}
网友评论