我知道要用零填充整数,我可以执行以下操作,
NSString * version = [NSString stringWithFormat:@“%03d”,appVersion.intValue];
如果需要,这将在整数的左侧添加最多3个零。但是我想做同样的事情,但我不需要填充到左边,我需要向右填充。
如何用零填充整数但是在整数的右边? (理想情况下与上述方法类似)
这是我需要的一个例子,
如果整数结果为38,我需要将版本字符串作为380(在整数的末尾只添加一个零,因为我想要最多三个字符,如果整数小于三个将添加字符,零以使其成为三个。)
我目前使用的方法将给我038.我需要380。
或者如果整数是381,那么输出应该是381,因为我只想要最多三个字符。
答案 0 :(得分:5)
您可以将该值乘以1000,然后打印出来吗?如果您需要大量的零,通常可能需要在乘法之前将int
提升为long
或long long
,以减少溢出的可能性。
NSString *version = [NSString stringWithFormat:@"%ld", ((long)appVersion.intValue)*1000];
如果您需要数字int
的长度,在决定乘以某个因子10之前,请取值的小数floor
加{1}}。例如:
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 * factor
。您可以根据需要根据您的情况进行调整。测试边界,这样你就不会得到奇怪的结果。
答案 1 :(得分:0)
char buf[4];
int len = sprintf(buf, "%u", 38);
while (len < 3)
buf[len++] = '0';
buf[len] = '\0';
您可能更喜欢sprint_s
而不是sprintf
。如果你真的是偏执狂,请检查sprintf
返回的值是否为负数。