好的....这似乎是一个简单的问题,但我找不到任何关于它的信息,所以我想我会在这里问。
我试图在var中存储一个数字(int),但我需要在它之前保留0
例如:
int x = 0001;
NSLog(@"%i",x) // returns 1
是否可以让它返回0001?
我知道我可以这样做:
NSLog(@"%04i",x); // returns 0001
但这不是我想要的答案,因为0的数量需要变化。
我并不特别需要使用int,但它需要是一个整数。
答案 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并以某种方式显示它。)
无论如何,小学数学教会我们int
与1
的编号相同,因此您将很难以不同的方式说服计算机。
答案 4 :(得分:0)
你有两个选择 - 创建一个既包含int-value(1)padding-count(3)又包含填充类型(零)的对象,或者使用一个字符串。使用字符串可能会导致其他问题(验证,你能阻止代码的其他部分将字符串数据放入文本中吗?)
但是,真正的问题是,你为什么要这样......当然还有另一种方式?代码重构时间!