我正在尝试将值转换为具有 2 精度十进制格式的浮点数。
NSString* formattedNumber = [NSString stringWithFormat:@"%.2lu", (unsigned long)users.count];
float totalRatingCount = atof([formattedNumber UTF8String]);
这给了我这样的价值观,例如
1.000000
2.000000
3.000000
我想要的是以下内容
1.00
2.00
3.00
我哪里出错了?
浮
点数没有精度值,它不是固定点值。但是,有一种更简单的方法可以转换为浮点数:
CGFloat totalRating = [formattedNumber floatValue];
要打印精度为 2DP 的浮点数,请使用格式字符串@"%.02f"
您需要
使用%.2f
格式说明符作为
NSString* formattedNumber = [NSString stringWithFormat:@"%.2f", (float)users.count];
float totalRatingCount = atof([formattedNumber UTF8String]);
您将获得所需的输出,小数点后具有 2 个值精度。
Using NSNumberFormatter, you can rounding number up to two digit.
double d = 12.1278;
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setRoundingMode:NSNumberFormatterRoundFloor];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
NSString *numberString = [formatter stringFromNumber:@(d)];
NSLog(@"numberString: %@", numberString);
输出为 :
数字字符串:12.12
试试这个:
NSNumber *number = [NSNumber numberWithFloat:(unsigned long)users.count];
NSNumberFormatter* nf=[[NSNumberFormatter alloc]init];
nf.minimumFractionDigits=2;
nf.maximumFractionDigits=2;
NSString* str = [nf stringFromNumber:number];
NSLog(@"%@",str);