将unsigned long转换为float,精度为2精度

时间:2015-04-17 05:50:00

标签: ios objective-c

我正在尝试使用2精度十进制格式将值转换为float。

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

我哪里错了?

4 个答案:

答案 0 :(得分:1)

浮点数没有精度值,它不是固定点值。但是,有一种更简单的方法可以转换为float:

CGFloat totalRating = [formattedNumber floatValue];

以2dp的精度打印浮点数,使用格式字符串@"%.02f"

答案 1 :(得分:1)

您需要将%.2f格式说明符用作

NSString* formattedNumber = [NSString stringWithFormat:@"%.2f", (float)users.count];
float totalRatingCount = atof([formattedNumber UTF8String]);

并且您将获得所需的输出值,小数点后精度为2。

答案 2 :(得分:1)

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);

输出是:


numberString:12.12

答案 3 :(得分:0)

试试这个:

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);