Я хочу использовать формат formatter для генерации моего вывода, поэтому число автоматически отформатируется для пользовательской локали, но я хочу, чтобы он работал как "%+. 1f" в printf (), который всегда имеет указанный знак.
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterDecimalStyle;
nf.maximumFractionDigits = 1;
double val = 3.1234;
label.text = [NSString stringWithFormat: @"XXX %@ XXX", [nf stringFromNumber: [NSNumber numberWithDouble: val]]];
Я хочу, чтобы на этикетке вышла "XXX +3.1 XXX" в США и соответствующая, но эквивалентная строка для любого другого места. Единственное, что я могу найти, это setPositiveFormat:
и setPositivePrefix:
.
Но я не хочу устанавливать формат, так как я не знаю, как форматировать числа в других странах; Я не знаю, используется ли знак плюса для обозначения положительного числа на арабском или русском языке или какой-то культуры, о которой я не думал. Я знаю, например, что десятичные точки, запятые, пробелы и т.д. Имеют разные значения в европейских странах по сравнению с США. Может ли быть так же верно для знаков +/-?
В настоящее время я делаю следующее:
label.text = [NSString stringWithFormat: @"XXX %s%@ XXX", (val < 0) ? "" : "+",
[nf stringFromNumber: [NSNumber numberWithDouble: val]]];
Но это предполагает, что "+" и "-" верны для всех форматов.
Я уверен, что он должен быть там, поскольку это стандартное форматирование, которое было в printf() со времен темноты...