功能:
- (NSString *)theFunction:(float)input {
NSArray * array = [NSarray initWithObjects:nil,nil@"1/8",nil,@"1/4",]
int fractions = lroundf((input - (int)input)/((float)1/(float)16));
if(fractions == 0 || fractions == 16) {
return [NSString stringWithFormat:@"%d",lroundf(input)];
} else {
return [NSString stringWithFormat:@"%d %d/16",(int)input,fractions];
}
}
笔记:
该if
语句转换5 0/16
为5
和。
如果您更喜欢and表示法,请将语句替换为:5 16/16
6
5 0/16
5 16/16
if
return [NSString stringWithFormat:@"%d %d/16",(int)input,fractions];
编辑:( 杰森)
//Just to make it a little sweeter!
- (NSString *)theFunction:(float)input {
int fractions = lroundf((input - (int)input)/((float)1/(float)16));
if(fractions == 0 || fractions == 16) {
return [NSString stringWithFormat:@"%d",lroundf(input)];
} else if(fractions == 2) {
return [NSString stringWithFormat:@"%d 1/8",(int)input];
} else if(fractions == 4) {
return [NSString stringWithFormat:@"%d 1/4",(int)input];
} else if(fractions == 6) {
return [NSString stringWithFormat:@"%d 3/8",(int)input];
} else if(fractions == 8) {
return [NSString stringWithFormat:@"%d 1/2",(int)input];
} else if(fractions == 10) {
return [NSString stringWithFormat:@"%d 5/8",(int)input];
} else if(fractions == 12) {
return [NSString stringWithFormat:@"%d 3/4",(int)input];
} else if(fractions == 14) {
return [NSString stringWithFormat:@"%d 7/8",(int)input];
} else {
return [NSString stringWithFormat:@"%d %d/16",(int)input,fractions];
}
}
编辑(杰森对编辑的回应)
我优化了你的代码,这样更干净。
还要检查下面的代码,我认为使用数组更有效。
- (NSString *)theFunction:(float)input {
NSArray * array = [[NSArray alloc] initWithObjects: @"",@"",@"1/8",@"",@"1/4",@"",@"3/8",@"",@"1/2",@"",@"5/8",@"",@"3/4",@"",@"3/4",@"",@"7/8",@"",nil];
int fractions = lroundf((input - (int)input)/((float)1/(float)16));
if(fractions == 0 || fractions == 16) {
return [NSString stringWithFormat:@"%d",lroundf(input)];
} else {
if([[array objectAtIndex:fractions] isEqualToString:@""]) {
return [NSString stringWithFormat:@"%d %d/16",(int)input,fractions];
} else {
return [NSString stringWithFormat:@"%d %@",(int)input,[array objectAtIndex:fractions]];
}
}
}