2013-04-02 2 views
2

В настоящее время у меня есть значение int, которое настраивается и отображается на этикетке. Значение int всегда представляет собой 5-значное число, и я показываю его с символом + между десятыми и сотыми. Если number = 12345, displayNumber = 123 + 45.StringWithFormat Для int Значение имеет один выпуск

ViewController.m 

int high = number/100; 
int low = number - (high * 100); 
NSString *displayNumber = [NSString stringWithFormat:@"%d+%d", high, low]; 

Моя проблема в том, что число имеет нуль в десятом месте. Если number = 12304, displayNumber будет отображаться как 123 + 4, где я хочу, чтобы он отображался как 123 + 04. Я пробовал использовать оператор if для низкого < 10, но это не очень хорошо сочетается с остальной частью моего кода. Есть ли простой способ сделать низкий дисплей двумя цифрами, даже если это однозначный номер? Заранее благодарю за ваше время.

ответ

6

Попробуйте это:

NSString *displayNumber = [NSString stringWithFormat:@"%d+%02d", high, low]; 
//               ^^ 
//               || 
//               |+-- Two positions 
//               +--- Pad with zeros 

Заявление

int low = number - (high * 100); 

можно оптимизировать, как

int low = number % 100; 

Вы также можете пропустить временные переменные вообще:

NSString *displayNumber = [NSString stringWithFormat:@"%d+%02d", number/100, number%100]; 
+3

Есть причина, по которой у него 132k, а мы нет. – matt

+0

@dasblinkenlight, хороший ... спасибо –

+0

+1 для стрелок –

0

Следующий код содержит место десятой для конкретной ситуации, когда оно равно нулю. Ex. number = 12304, displayNumber = 123 + 04. Я не оптимизировал его, как предложил dasblinkenlight. Благодаря dasblinkenlight!

int high = number/100; 
    int low = number - (high * 100); 


    NSString *displayNumber = [NSString stringWithFormat:@"%d+%02d", high, low];