1

我知道用零填充整数我可以执行以下操作,

NSString *version = [NSString stringWithFormat:@"%03d", appVersion.intValue];

如果需要,这将在整数左侧添加最多 3 个零。但是我想做同样的事情,但不是向左填充,而是向右填充。

如何用零填充整数但在整数的右侧?(理想情况下与上述方法类似的简单性)

这是我需要的一个例子,

如果整数结果是 38,我需要版本字符串显示为 380(整数末尾只添加了一个零,因为我想要最多三个字符,如果整数小于三个字符,则为零将被添加以使其成为三个)。

我目前使用的方法会给我 038。我需要 380。

或者如果整数是 381,那么输出应该是 381,因为我只想要最多三个字符。

4

2 回答 2

5

你能把这个值乘以 1000,然后打印出来吗?如果您需要很多零,您通常可能希望将 提升int为 alonglong long在乘法之前,以减少溢出的可能性。

NSString *version = [NSString stringWithFormat:@"%ld", ((long)appVersion.intValue)*1000];

如果您需要数字的长度int,在决定乘以十倍之前,取值floor的小数log并加一。例如:

int foo = 123;
int digitsInFoo = floor(log10(foo)) + 1; /* 3 */

然后使用一些规则来决定要添加多少个零位。

int totalDesiredLength = 5;
int numberOfZeroesNeeded = totalDesiredLength - digitsInFoo; /* this assumes totalDesiredLength >= digitsInFoo */
int factor = (int) pow(10, numberOfZeroesNeeded); /* 100 */

那么五位数的结果将是foo * factor12300。您可以根据需要根据自己的情况进行调整。测试界限,这样你就不会得到奇怪的结果。

于 2012-08-13T17:52:34.910 回答
0
char buf[4];
int len = sprintf(buf, "%u", 38);
while (len < 3)
    buf[len++] = '0';
buf[len] = '\0';

您可能更sprint_s喜欢sprintf. 如果你真的很偏执,请检查返回的值sprintf是否为负数。

于 2012-08-13T18:28:03.650 回答