不增加最后一位数字的舍入浮点值 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