可能重复:
Rounding numbers in Objective-C
objective -C : how to truncate extra zero in float?
Correcting floating point numbers
在Objective C中,我有一个double,它接收到如下所示的计算答案:
double answer = a / b;
double变量有时可以是整数,但也可以是一个分数,例如
NSLog(@"%f", answer)
这可以返回2.000000或5.142394或2.142000。
我想知道是否有办法编辑小数位,以便尾随的0不可见,例如:
2.000000将是2
5.142394将是5.142394
2.142000将是2.142
如何做到这一点?
答案 0 :(得分:10)
如果你想硬编码你所追求的小数位数,这会给你两位小数:
NSLog(@"%.2f", answer);
在此处阅读有关格式说明符的更多信息:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
或者,如果您想即时更改小数位数,请考虑使用NSNumberFormatter类:
int maxDigitsAfterDecimal = 3; // here's where you set the dp
NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
[nf setMaximumFractionDigits:maxDigitsAfterDecimal];
NSString * trimmed = [nf stringFromNumber:[NSNumber numberWithDouble:3.14159]];
NSLog(@"%@", trimmed); // in this case, 3.142
[nf release];
答案 1 :(得分:2)
NSNumberFormatter正是您所寻找的。 (如果你不使用Mac,我很抱歉,我稍后会发布类似iOS文档的链接。)
编辑(按要求):NSNumberFormatter实际上可用于iOS(我上面发布的文档对于iOS来说是相同的),并且您应该设置一些相关属性。首先,它的numberStyle属性应该设置为NSNumberFormatterDecimalStyle(其他包括百分比,银行家和拼写)。 NSNumberFormatter还包括一个roundingMode属性,在你的情况下应该是NSNumberFormatterRoundHalfEven。这将更改您的小数以使最后一位数字舍入,但这是摆脱这些零的最佳方法。