这可能是一个简单的问题,但我无法找到逻辑。
我得到像这样的值
12.010000 12.526000 12.000000 12.500000
如果我得到值12.010000,我必须显示12.01
如果我得到12.526000的值,我必须显示12.526
如果我得到值12.000000我必须显示12
如果我得到12.500000的值,我必须显示12.5
任何人都可以帮帮我
谢谢
答案 0 :(得分:4)
试试这个:
[NSString stringWithFormat:@"%g", 12.010000] [NSString stringWithFormat:@"%g", 12.526000] [NSString stringWithFormat:@"%g", 12.000000] [NSString stringWithFormat:@"%g", 12.500000]
答案 1 :(得分:3)
float roundedValue = 45.964;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];
NSLog(numberString);
[formatter release];
您可能需要进行一些修改 -
// You can specify that how many floating digit you want as below
[formatter setMaximumFractionDigits:4];//2];
// You can also round down by changing this line
[formatter setRoundingMode: NSNumberFormatterRoundDown];//NSNumberFormatterRoundUp];
上的查询
答案 2 :(得分:0)
显然,taskinoor的解决方案是最好的,但你提到你找不到解决它的逻辑......所以这就是逻辑。您基本上以相反的顺序循环遍历字符,查找非零或句点字符,然后根据您找到任一字符的位置创建子字符串。
-(NSString*)chopEndingZeros:(NSString*)string {
NSString* chopped = nil;
NSInteger i;
for (i=[string length]-1; i>=0; i--) {
NSString* a = [string substringWithRange:NSMakeRange(i, 1)];
if ([a isEqualToString:@"."]) {
chopped = [string substringToIndex:i];
break;
} else if (![a isEqualToString:@"0"]) {
chopped = [string substringToIndex:i+1];
break;
}
}
return chopped;
}