StringWithFormat对于int值有一个问题

时间:2013-04-02 02:03:17

标签: ios objective-c int logic stringwithformat

我目前有一个自定义格式的int值,并显示在标签中。 int值总是一个5位数字,我在十分之一到百分之一的位置显示一个+符号。如果number = 12345,则displayNumber = 123 + 45。

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语句来降低<但是,这并没有与我的其余代码很好地结合。是否有任何简单的方法可以使低位显示两位数,即使它是一位数?提前谢谢您的时间。

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

以下代码在特定情况下等于零时保持十分之一。防爆。 number = 12304,displayNumber = 123 + 04。我没有像dasblinkenlight建议那样优化它。感谢dasblinkenlight!

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


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