关于int的简单问题

时间:2011-08-26 14:15:58

标签: iphone objective-c

好的....这似乎是一个简单的问题,但我找不到任何关于它的信息,所以我想我会在这里问。

我试图在var中存储一个数字(int),但我需要在它之前保留0

例如:

int x = 0001;
NSLog(@"%i",x)  // returns 1

是否可以让它返回0001?

我知道我可以这样做:

NSLog(@"%04i",x);  // returns 0001

但这不是我想要的答案,因为0的数量需要变化。

我并不特别需要使用int,但它需要是一个整数。

5 个答案:

答案 0 :(得分:6)

前导0是无关紧要的,添加它们将make the number an octal literal,因此您无法在不指定宽度的情况下记录它们。但是,您可以指定要打印的动态宽度。

int dyn_width = 4;
int x = 1;

NSLog(@"%0*i", dyn_width, x);

答案 1 :(得分:0)

如果您需要字符串而不是值,则需要使用字符串变量。

NSString *x = @"0001";
NSLog(@"%@",x);

然后,当您需要进行一些计算时,请使用“[x intValue]”。

答案 2 :(得分:0)

除了使用你不想要的字符串之外,我可以看到在第一个有效数字之前编码0的数字的唯一方法是将值存储在double中,作为{{1} }。当然,在某些情况下,精度可能是一个问题,没有提到对该整数表示形式的算术变得更加困难。

答案 3 :(得分:0)

我认为你试图显示的零的数量不是模型的一部分(实际的后备存储,int),而是演示的一部分(所以函数采用你的{{1并以某种方式显示它。)

无论如何,小学数学教会我们int1的编号相同,因此您将很难以不同的方式说服计算机。

答案 4 :(得分:0)

你有两个选择 - 创建一个既包含int-value(1)padding-count(3)又包含填充类型(零)的对象,或者使用一个字符串。使用字符串可能会导致其他问题(验证,你能阻止代码的其他部分将字符串数据放入文本中吗?)

但是,真正的问题是,你为什么要这样......当然还有另一种方式?代码重构时间!