不增加最后一位数字的舍入浮点值 Objective C iOS
Round Float Value without increasing last digit Objective C iOS
我想将纬度值转换为字符串,但最多为 2 个十进制值。我已经实现了这个方法
[NSString stringWithFormat:@"%.2f", nearestRegion.center.latitude]
但问题是它将 31.415546
转换为 31.42
意味着增加最后一位。结果应为 31.41
。可能吗?
你可以这样做,
float f = 31.415546f;
f = truncf(f * 100.0) / 100.0;
NSString* floatString = [NSString stringWithFormat:@"%f", f];
NSLog(@"%@",floatString);
这将 return,
31.410000
但是 31.41 将等于 31.410000
所以这将满足您的目的
希望对您有所帮助
打印前减去 nearestRegion.center.latitude
0.005 即可解决问题。
[NSString stringWithFormat:@"%.2f", nearestRegion.center.latitude - 0.005]
我的答案是
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber *numb = @(31.415546);
NSString *numberAsString = [numberFormatter stringFromNumber:numb];
NSLog(@"The value is - %@", numberAsString);
输出值为
试试这个:
float myFloat= 2345.678990;
NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
[format setNumberStyle:NSNumberFormatterDecimalStyle];
[format setRoundingMode:NSNumberFormatterRoundDown];
[format setMaximumFractionDigits:2];
[format setMinimumFractionDigits:2];
NSString * string = [NSString stringWithFormat:@"%@",[format stringFromNumber:[NSNumber numberWithFloat:myFloat]]];
NSLog(@"After change Float Value:%@",string);
输出为:2345.67
我想将纬度值转换为字符串,但最多为 2 个十进制值。我已经实现了这个方法
[NSString stringWithFormat:@"%.2f", nearestRegion.center.latitude]
但问题是它将 31.415546
转换为 31.42
意味着增加最后一位。结果应为 31.41
。可能吗?
你可以这样做,
float f = 31.415546f;
f = truncf(f * 100.0) / 100.0;
NSString* floatString = [NSString stringWithFormat:@"%f", f];
NSLog(@"%@",floatString);
这将 return, 31.410000
但是 31.41 将等于 31.410000
所以这将满足您的目的
希望对您有所帮助
打印前减去 nearestRegion.center.latitude
0.005 即可解决问题。
[NSString stringWithFormat:@"%.2f", nearestRegion.center.latitude - 0.005]
我的答案是
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber *numb = @(31.415546);
NSString *numberAsString = [numberFormatter stringFromNumber:numb];
NSLog(@"The value is - %@", numberAsString);
输出值为
试试这个:
float myFloat= 2345.678990;
NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
[format setNumberStyle:NSNumberFormatterDecimalStyle];
[format setRoundingMode:NSNumberFormatterRoundDown];
[format setMaximumFractionDigits:2];
[format setMinimumFractionDigits:2];
NSString * string = [NSString stringWithFormat:@"%@",[format stringFromNumber:[NSNumber numberWithFloat:myFloat]]];
NSLog(@"After change Float Value:%@",string);
输出为:2345.67