Objective C删除小数位后的尾随零

时间:2014-04-17 16:42:20

标签: objective-c nsnumber

我正在尝试使用尾随零来获取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。

2 个答案:

答案 0 :(得分:3)

你的宏没有意义。做到这一点:

#define kFloatFormat2(x) [NSString stringWithFormat:@"%.2f", [x floatValue]]

其中xNSNumber。然后你会这样称呼它:

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