1

当我定义

NSString *testString = [NSString stringWithFormat:@"%4d", 543210];

然后testString@"543210",而不是@"3210"

这曾经在Xcode v4.3.1中工作,但现在我升级到v4.6并且它停止工作了。

有任何想法吗?

4

2 回答 2

5

那么 testString 是@"543210", 而不是@"3210"

无论如何,这是正确的行为。格式说明符不限制要格式化的数字的%Nd字段 - 如果字段大于表示数字所需的字符数,它只会用空格填充它。如果你3210之前有,那是错误的。

如果您想格式化一个数字,以便最多打印最后四位数字,那么您可以执行以下操作:

NSString *numStr = [NSString stringWithFormat:@"%d", 543210]; // or whatever
if (numStr.length > 4) {
    numStr = [numStr substringFromIndex:numStr.length - 4];
}
于 2013-05-02T06:33:58.390 回答
1

另一种选择,具有简短的好处:

NSString *testString = [NSString stringWithFormat:@"%4d", 543210 % 10000];

模运算符%返回余数,所以如果% 10000你得到 4 个最低有效数字。

于 2013-05-02T08:55:26.640 回答