2013年6月27日 星期四

如何消除小數點後面的零

使用NSNumberFormatter

先看NSNumberFormatter簡介

如何抓出小數後面有幾位數

+ (NSString*) removeTrialZero:(NSString*)strData
{
NSRange range = [strData rangeOfString:@"."];
int digits;
if (range.location != NSNotFound) {
digits = [strData length];
} else {
range = [strData rangeOfString:@"e-"];
if (range.location != NSNotFound) {
digits = [strData intValue];
} else {
digits = 0;
}
}
//小數後面沒有東西
if (digits == 0) {
return strData;
}
/*
http://stackoverflow.com/questions/7469614/remove-more-than-2-trailing-zero
*/
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
//原來小數後面幾位數就保留幾位數
[formatter setMaximumFractionDigits:digits];
//小數後面最小零位,這樣就可以把多餘的0剔除了
[formatter setMinimumFractionDigits:0];
[formatter setUsesGroupingSeparator:YES];
[formatter setGroupingSeparator:@","];
[formatter setGroupingSize:3];
NSNumber *strDataNumber = [formatter numberFromString:strData];
if (strDataNumber == nil) {
return nil;
}
NSString *resultString = [formatter stringFromNumber:strDataNumber];
[formatter release];
return resultString;
}
view raw removeTrialZero hosted with ❤ by GitHub