簡體   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