我正在尝试使用尾随零来获取2位小数的数字。
例如
11.633-> 11.63
11.630-> 11.63
11.60-> 11.6
11-> 11
12928.98-> 12928.98
为此我在下面写了
#define kFloatFormat2(x) [NSString stringWithFormat:@"%g", [[NSString stringWithFormat:@"%.2f", x] floatValue]]
NSNumber *number1 = [NSNumber numberWithDouble:12928.98];
NSLog(@"number1:%@", number1);
NSString *string1 = kFloatFormat2([number1 floatValue]);
NSLog(@"string1:%@", string1);
以上输出打印
NUMBER1:12928.98
字符串1:12929
为什么它为string1打印12929值 我希望它为12928.98。
答案 0 :(得分:3)
你的宏没有意义。做到这一点:
#define kFloatFormat2(x) [NSString stringWithFormat:@"%.2f", [x floatValue]]
其中x
是NSNumber
。然后你会这样称呼它:
NSString *string1 = kFloatFormat2(number1);
或者只是这样做:
double x = 12928.98;
NSLog(@"number = %.2f", x);
答案 1 :(得分:3)
您是否尝试过使用数字格式化程序?
NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesGroupingSeparator:NO];
[formatter setMaximumFractionDigits:fractionDigits];
[formatter setMinimumFractionDigits:fractionDigits];
现在做点什么
NSNumber *x = @23423;
NSString *value = [formatter stringFromNumber:x];
NSLog(@"number = %@, value);