繁体   English   中英

关于int的简单问题

[英]Simple question about int

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

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

例如:

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

是否可以使其返回0001?

我知道我可以这样做:

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

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

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

前导0无关紧要,将它们相加会使数字成为八进制文字 ,因此您不能在未指定宽度的情况下记录它们。 但是,您可以指定要打印的动态宽度。

int dyn_width = 4;
int x = 1;

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

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

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

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

除了使用不需要的字符串外,我看到的在第一个有效数字之前编码0的数量的唯一方法是将值存储为double ,即0.0001 当然,在某些情况下,精度可能是个问题,更不用说对这种整数表示形式进行算术变得更加困难了。

我认为您要显示的零个数不是模型的一部分(实际的后备存储, int ),而是表示的一部分(因此是一个将int并以某种方式显示出来的函数)。

无论如何,初等数学会告诉我们101是相同的数字,因此很难说服计算机。

您有两个选择-创建一个同时包含int值(1),padding-count(3)和padding类型(零)的对象,或使用字符串。 使用字符串以后可能会引起其他问题(验证,您是否可以停止代码的其他部分在其中放置文本之类的字符串数据?)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM