如何用整数右边的零填充整数?

gos*_*pps 1 c++ cocoa-touch objective-c ios

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

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

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

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

这是我需要的一个例子,

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

我目前使用的方法将给我038.我需要380.

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

Ale*_*lds 5

你可以将该值乘以1000,然后打印出来吗?如果你需要大量的零,你通常可能希望将乘法推广int到a longlong long之前,以减少溢出的可能性.

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

如果你需要int数字的长度,在决定乘以某个因子十之前,取值floor的十进制数log并加一.例如:

int foo = 123;
int digitsInFoo = floor(log10(foo)) + 1; /* 3 */
Run Code Online (Sandbox Code Playgroud)

然后使用一些规则来决定要添加多少个零数字.

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

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