StringWithFormat对于int值有一个问题

JBe*_*sky 2 int logic objective-c stringwithformat ios

我目前有一个自定义格式的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];
Run Code Online (Sandbox Code Playgroud)

我的问题是当数字在十分位数时为零.如果number = 12304,displayNumber将显示为123 + 4,我希望它显示为123 + 04.我尝试使用低于10的if语句,但这与我的其余代码并不完全兼容.是否有任何简单的方法可以使低显示两位数,即使它是一位数?提前谢谢您的时间.

das*_*ght 6

试试这个:

NSString *displayNumber = [NSString stringWithFormat:@"%d+%02d", high, low];
//                                                         ^^
//                                                         ||
//                                                         |+-- Two positions
//                                                         +--- Pad with zeros
Run Code Online (Sandbox Code Playgroud)

该声明

int low = number - (high * 100);
Run Code Online (Sandbox Code Playgroud)

可以优化为

int low = number % 100;
Run Code Online (Sandbox Code Playgroud)

您也可以完全跳过临时变量:

NSString *displayNumber = [NSString stringWithFormat:@"%d+%02d", number/100, number%100];
Run Code Online (Sandbox Code Playgroud)

  • 有一个原因,他有132k而我们没有. (3认同)